gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 12:51:50 24 4
gpt4 key购买 nike

我正在使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com