Lam*_*amp 7 session login ruby-on-rails omniauth
在我的rails 3应用程序中,我使用Omniauth作为用户身份验证部分(fb/twitter).
其实我遵循这个:
https://github.com/RailsApps/rails3-mongoid-omniauth
https://github.com/RailsApps/rails3-mongoid-omniauth/wiki/Tutorial
但是,当我关闭浏览器会话到期时,我需要再次登录.如何为回访用户保留会话?
任何帮助将不胜感激!
您想要的并不困难,您只需在创建会话时设置永久cookie,然后在设置当前用户时检索此值.
在您ApplicationController的current_user方法中,只需将您的方法更改为:
def current_user
return unless cookies.signed[:permanent_user_id] || session[:user_id]
begin
@current_user ||= User.find(cookies.signed[:permanent_user_id] || session[:user_id])
rescue Mongoid::Errors::DocumentNotFound
nil
end
end
Run Code Online (Sandbox Code Playgroud)
如果用户想要SessionsController,请在您的修改create中设置Cookie:
def create
auth = request.env["omniauth.auth"]
user = User.where(:provider => auth['provider'],
:uid => auth['uid']).first || User.create_with_omniauth(auth)
session[:user_id] = user.id
cookies.permanent.signed[:permanent_user_id] = user.id if user.really_wants_to_be_permanently_remembered
redirect_to root_url, :notice => "Signed in!"
end
Run Code Online (Sandbox Code Playgroud)