在Restful Authentication中,lib/authenticated_system.rb
,
current_user
为什么要login_from_basic_auth
执行authenticate_with_http_basic
,检查HTTP用户提供的登录名和密码?
我认为登录表单位于/session/new
(或/login
),然后POST到/session
,这将转到sessions
控制器,{{1动作,在那里,它
验证用户提供的登录名和密码。
这是create
lib/authenticated_system.rb
所以问题是,如果以前验证过登录名和密码,那么为什么要在def current_<%= file_name %>
@current_user ||= (login_from_session
|| login_from_basic_auth
|| login_from_cookie) unless @current_user == false
end
中查看?
答案 0 :(得分:3)
此功能表示您的系统有三种验证方式:
即使您的基本登录发生在来自/ session / new或/ login的POST请求中,POST请求实际执行的唯一操作就是设置会话用户ID(可能是session [:user_id])。一旦设置了会话[:user_id],您就不再需要登录才能执行请求,因为您已通过身份验证。从这一点开始,通过检查会话[:user_id]以查看某人是否已登录来进行实际身份验证。
以下是更详细的身份验证生命周期(用于登录):
这是一个更详细的身份验证生命周期(用于HTTP BASIC身份验证):
这是一个更详细的身份验证生命周期(记住我的cookie):