Ruby on rails 设计验证后添加过滤器
我需要在应用程序控制器中添加Ruby on rails 设计验证后添加过滤器,ruby-on-rails,ruby-on-rails-4,devise,Ruby On Rails,Ruby On Rails 4,Devise,我需要在应用程序控制器中添加环绕\u操作:设置\u时区(或在\u过滤器:设置\u时区之前)。问题在于,当前用户总是nil,因为设计验证在过滤器之后运行 我想在设计身份验证后运行筛选器,以便访问当前用户并获取时区。 我的代码: class ApplicationController < ActionController::Base around_action :set_time_zone private def set_time_zone current_user.t
环绕\u操作:设置\u时区
(或在\u过滤器:设置\u时区
之前)。问题在于,当前用户
总是nil
,因为设计验证在过滤器之后运行
我想在设计身份验证后运行筛选器,以便访问当前用户
并获取时区。
我的代码:
class ApplicationController < ActionController::Base
around_action :set_time_zone
private
def set_time_zone
current_user.time_zone # this raises an expception because current_user is nil
end
end
class ExampleController < ApplicationController
before_action :authenticate_user!
end
class ApplicationController
我想保留身份验证\u用户在示例控制器
中编码>并在应用程序控制器
中保留设置时区
我也尝试过使用append\u before\u filter:set\u time\u zone
,但它并没有解决这个问题。回想一下,Deavise在幕后使用Warden,它为您提供了大量回调。
查看每次用户通过身份验证时(每次会话中第一次)执行的回调:
例:
只需创建一个新的初始值设定项文件并将代码放在那里。(/config/initializers/warden_callbacks.rb)回想一下,Desive在幕后使用warden,它为您提供了大量回调。
查看每次用户通过身份验证时(每次会话中第一次)执行的回调:
例:
只需创建一个新的初始值设定项文件并将代码放在那里。(/config/initializers/warden_callbacks.rb)这是一个有用的提示!然而,有时我使用API密钥进行身份验证,所以我不能完全依赖Desive,我需要依赖控制器中的Rails过滤器。哦,我明白了!让我四处看看能找到什么。好问题!这是一个有用的提示!然而,有时我使用API密钥进行身份验证,所以我不能完全依赖Desive,我需要依赖控制器中的Rails过滤器。哦,我明白了!让我四处看看能找到什么。好问题!我在Github上打开了一个问题:我在Github上打开了一个问题:
Warden::Manager.after_authentication do |user,auth,opts|
user.time_zone
end