使用新的管理界面在Padrino 0.11中实现Remember Me

时间:2013-04-07 06:18:53

标签: ruby authentication cookies sinatra padrino

我正在尝试在新的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插件,并从头开始实现作为练习。)。

(此外,奖励业力指向帮助解决这个问题,因为我正在实施这项工作,作为全球保护慈善机构的一些公益工作的一部分。)

0 个答案:

没有答案