我想在登录/会话创建后挂钩设计。我该怎么做呢?
基本上我想在每次登录时设置一个用户位置,为此我需要一个登录后的挂钩。
答案 0 :(得分:8)
Devise建立在Warden之上,所以你可以使用Warden的after_authentication钩子。
将它放在初始值设定项中:
Warden::Manager.after_authentication do |user,auth,opts|
# do something with user
end
远程IP地址和其他请求信息存储在auth.request(即auth.request.remote_ip)中。
答案 1 :(得分:4)
设计成功登录后,设计更新user.current_sign_in_at
时间戳的值。因此,您只需向用户模型添加before_save
过滤器即可。在该过滤器中,检查此字段的值是否已更改,如果已更改,请设置用户位置。
BTW - 我不确定你所说的“位置”是什么意思 - 如果你的意思是IP地址,Devise已经为你存储了这些。
答案 2 :(得分:0)
以下是设计维基的页面:How To: Redirect to a specific page on successful sign in。
总之,建议将以下方法添加到应用程序控制器:
应用程序/控制器/ application_controller.rb
def after_sign_in_path_for(resource)
custom_location_for(resource) || welcome_path
end
在上面的代码中,resource
表示您已实现的对象(用户,帐户等)为其设计身份验证。 (路径中包含devise_for
的对象。)