我已明确调用before_filter
来在每个控制器操作之前对用户进行身份验证。
class ApplicationController < ActionController::Base
before_filter :authenticate_user!
class UsersController < Devise::RegistrationsController
before_filter :authenticate_user!
如果,当我退出时,我尝试访问任何页面,我被重定向到sign_in
页面,除非该页面由UsersController
呈现。
如果发生这种情况,我将被授予访问该页面的权限,除非我正在访问edit
操作。
我不知道为什么authenticate_user!
无法在UsersController
中工作,而且如果我访问edit
,我会更加难以理解为什么它会起作用。
以下是edit
中的UsersController
(以及其他方法)
class UsersController < Devise::RegistrationsController
#redirects queries as expected
def edit
@user = User.find_by_id(params[:id])
end
#Does not redirect queries
def about
@user = current_user
end
是否有人知道如何获得预期的行为(对UsersController
中任何操作的所有查询进行重定向?
答案 0 :(得分:3)
将您的操作添加到控制器prepend_before_filter:
class UsersController < Devise::RegistrationsController
prepend_before_filter :authenticate_scope!, only: [:edit, :update, :destroy, :about]
...