设计:登录成功后挂钩

问题描述 投票:0回答:2

在我的 Rails 应用程序中,我正在使用 devise 作为我的身份验证系统。我遇到一种情况,我想使用基于用户密码的密钥来加密一些数据。我认为执行此操作的最简单方法是在成功登录期间,从用户的纯文本密码(从登录表单传入)生成用户的私钥并将其存储在用户的会话中。我真的不想要求用户多次输入密码。

devise是否提供了指定登录成功后回调函数的方法?或者有更好的方法吗?

ruby-on-rails devise
2个回答
11
投票

Rubydoc - after_database_authentication 方法

在您使用 devise 的用户模型中创建 after_database_authentication 实例方法。


3
投票

假设您有 Devise 资源

User
且属性为
password
,则登录后即可获取用户密码
after_sign_in_path_for
,登录成功后调用。

  # app/control,lers/application_controller.rb
  class ApplicationController < ActionController::Base
    def after_sign_in_path_for(resource)
      password = param[:user][:password]
      do_cool_stuf_with_password(password)
      #... 
      return url_for_root
   end
end
© www.soinside.com 2019 - 2024. All rights reserved.