ruby-on-rails - devise的sign_in是做什么的

标签 ruby-on-rails devise

我正在使用 devise 进行 rails api 身份验证,但无法正确理解 devise 的 sign_in 正在为我们做什么。

我有用于登录用户的带有创建方法的 session Controller 。

def create 
 user_email = params[:session][:email]
 user_password = params[:session][:password]
 user = user_email.present? && User.find_by(email: user_email)
 if user.valid_password?(user_password)
   sign_in user, store: false   /* exactly this line */
   render json: user, status: 200, location: [:api, user]
 else
   render json: { errors: "Invalid email or password" }, status: 422
 end
end

在 ruby​​doc 上,它的描述是这样写的

Sign in a user that already was authenticated. This helper is useful for logging users in after sign up. All options given to sign_in is passed forward to the set_user method in warden.



但我不清楚。谢谢。

最佳答案

sign_in适用于当您已经拥有 User 时您自己创建或加载/验证的对象,因此希望在 session 中存储为当前和即将到来的请求的其余部分的经过验证的用户。

如果您查看 source code for the default Devise SessionsController 你会看到它也使用了sign_in登录用户。

设计是 warden 上的一层, 所以你可能想看看它的 documentation了解此级别的功能。正如您引用的设计文档所述,sign_in只需调用set_user典狱长的方法。 Devise 在顶部添加了很多便利,例如使用多个范围和各种 jail 长身份验证策略的能力。

关于ruby-on-rails - devise的sign_in是做什么的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44746982/

相关文章:

PHP 包含在 Ruby on Rails 中吗?

ruby-on-rails - Rails - 在模型中查找具有特定值的条目的有效方法

javascript - 如何将CKEditor默认值设置为空白?

ruby-on-rails - 如何在 vim 编辑器中使用 bundler 打开 gem 源代码

authentication - Refinerycms + 设计 : custom user can't find the devise helpers (how to add a separate devise authentication)?

ruby-on-rails - Rails 可安装引擎和设计

ruby-on-rails - 与 country_code :string instead of country_id 的 ActiveRecord 关联

ruby-on-rails - Devise 生成的代码在哪里?

ruby-on-rails-3 - 在 Rails 3 中选择性地关闭设计的闪光通知

ruby-on-rails - Ruby on Rails 访问 Controller 中的 Devise.sign_in_after_reset_password