我有一个Rails 5应用程序(仅限api)。我正在使用devise_token_auth进行身份验证。在应用程序中我有几个控制器,对于所有控制器我想authenticate_user!
。我想避免重复行before_action :authenticate_user!
,所以我把它放在ApplicationController中。
class ApplicationController < ActionController::API
include DeviseTokenAuth::Concerns::SetUserByToken
before_action :authenticate_user!
end
使用这种方法,即使在登录和注册期间也会调用authenticate_user!
。如何跳过:authenticate_user!
登录,注册和注销?我试图修补SessionsController以添加skip_before_action
。
module DeviseTokenAuth
class SessionsController
skip_before_action :authenticate_user!, only: [:create, :destroy, ]
end
end
但是控制器是延迟加载的,所以我得到以下错误:
undefined method `skip_before_action' for DeviseTokenAuth::SessionsController:Class
我错过了什么?还有其他方法吗?谢谢你的帮助!
答案 0 :(得分:0)
您的SessionsController
类应继承Devise::SessionsController
以使用skip_before_action
类方法。
module DeviseTokenAuth
class SessionsController < Devise::SessionsController
skip_before_action :authenticate_user!, only: [:create, :destroy]
end
end
答案 1 :(得分:0)
您可以在之后声明
before_action :authenticate_user!
::DeviseTokenAuth::SessionsController.class_eval do
skip_before_action :authenticate_user!
end