我从阅读Sessions vs Cookies中收集到的主要内容是,Cookie存储在客户端,而会话存储在服务器端.如果会话存储在服务器端,那么服务器如何知道哪个客户端是他们的?显然,必须在客户端进行某些操作.
每当我使用自动滚动用户身份验证时,session_token
我的users
数据库表中都有一列.
然后,这个模块倾向于为我提供便利:
module SessionsHelper def current_user User.find_by_session_token(session[:session_token]) end def current_user=(user) @current_user = user session[:session_token] = user.session_token end def logout_current_user! current_user.reset_session_token! session[:session_token] = nil end def require_current_user! redirect_to new_session_url if current_user.nil? end def require_no_current_user! redirect_to user_url(current_user) unless current_user.nil? end end
我相信存储在服务器端的会话,它们意味着session_token
每个用户都有.此外,会话散列必须在客户端.如果没有,它在哪里?请注意,我存储这样的用户的session_token: session[:session_token] = user.session_token
.最后,如果我认为会话是在客户端,那么它是如何保持安全的?
最后,这是否与在其他框架(如Django,php框架等)上处理会话的方式相同?如果没有,有什么关键的区别?
非常感谢.