Grapeでskip_before_action

Deviseとか使っていて、ApplicationControllerに認証の仕組みを設ける時。

1
2
3
class ApplicationController < ActionController::Base
  before_action :authenticate_user!
end

こう書きますね。
ログイン前のページではログイン判定は不要なのでskip_before_actionでskipさせるのが定石だと思います

1
2
3
class HogeController <  ActionController::Base
  skip_before_action :authenticate_user!
end

Grapeではどうやんのよっていう話し。


route.settingsを使うといいです

1
2
3
4
5
6
7
8
9
module API::V1
  class Root < Grape::API
    before do
      user_authenticate! unless route.settings[:skip_user_authenticate]
    end

    mount Users
  end
end
1
2
3
4
5
6
7
8
9
10
module API::V1
  class Users < Grape::API
    resource 'users' do
      route_setting :skip_user_authenticate, true
      get do
        # do something
      end
    end
  end
end

Comments