我正在尝试在新的Padrino 0.11 Admin界面中实现“记住我”功能,但由于它与Rails之间的差异而有一点点麻烦。基本上,我跟随http://railscasts.com/episodes/274-remember-me-reset-password。
我设法让Remember Me和auth_token轻松工作,当我去看它时,我可以在Dev控制台中看到cookie。我很难找到如何让应用程序在cookie存在的时候在上进行自动登录。我确定这是愚蠢的,但这是我要做的。
例如,我已经通过会话控制器中的实际记住我创建了一个auth_token并将其设置为Chrome上的开发控制台中的cookie(我可以在localhost上看到它)。
管理器/控制器/会话
post :create do
if account = Account.authenticate(params[:email], params[:password])
set_current_account(account)
if params[:remember_me]
response.set_cookie('da_app', value: account.auth_token,
expires: (Time.now + 1.year + 1.day))
end
flash[:success] = "You've successfully logged in as #{account.name}."
redirect url(:base, :index)
else
params[:email], params[:password] = h(params[:email]), h(params[:password])
flash[:error] = pat('login.error')
redirect url(:sessions, :new)
end
end
然而,由于我对padrino的经验不足,有点难以理解我在输入请求之前触发的逻辑位,检查cookie然后将用户登录。我尝试了以下内容,是不完美但绝对不起作用(虽然不确定为什么...... =<)事实上,检测cookie的代码块似乎甚至没有被触发(这看起来非常基本。)。
admin / app.rb(不确定这是否适合它)
before '/*' do
if request.cookies['da_app'].exists?
set_current_account(Account.find_by_auth_token(request.cookies['da_app']))
redirect url(:base, :index)
end
end
所以,我确定它可能很难解决,但有点难以解决这个问题(而且,我真的试图避免使用像padrino-warden之类的gem插件,并从头开始实现作为练习。)。
(此外,奖励业力指向帮助解决这个问题,因为我正在实施这项工作,作为全球保护慈善机构的一些公益工作的一部分。)