设计的签名是做什么的

Mri*_*yay 7 ruby-on-rails devise

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

我有会话控制器与创建方法签署用户.

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
Run Code Online (Sandbox Code Playgroud)

在rubydoc上,它的描述是这样写的

登录已经过身份验证的用户.注册后,此助手可用于记录用户.给sign_in的所有选项都传递给warden中的set_user方法.

但我不清楚.谢谢.

mil*_*ner 7

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

如果您查看默认设计SessionsController源代码,您会发现它也用于sign_in登录用户。

设计是在层监狱长,所以你可能想看看它的文档,了解这一级别的功能。正如您引用的设计文档所述,sign_in只需set_user从监狱长调用该方法。Devise 在上面增加了很多便利,比如使用多个范围和各种管理员身份验证策略的能力。