1

我正在尝试根据我继承的代码实现记住我的登录选项。

我有以下内容:

def login 
if request.post?
  if params[:remember_me]
    # this is where user checked the remember me box
    cookies[:login] = { :value => "XJ12", :expires => Time.now + 120}
  end

    session_user = User.authenticate(params[:user][:email], params[:user][:password])   
    if session_user

      session[:user] = session_user.id
      @user=User.find(session[:user])
      @user.update_attributes(:last_login_time => Time.now(),:is_logged => true)
      @user.save
      flash[:message]  = "Login successful."
      redirect_to "/admin"
    else
      flash[:warning] = "Your email or password is incorrect. Please re-enter."
    end
  end
end

结尾

无论我做什么,cookie 都会自动设置(EXPIRES: session)。如果用户没有选择记住我选项,我想设置 cookie 10 分钟。如果他选择记住我,那么我会设置更长的时间。我可以得到一些指导吗?

4

1 回答 1

2

首先,Time.now + 120 距离现在只有 2 分钟,您应该将其设置为稍后的值。

然后,这可以是您的流程:

  1. 尝试获取用户时,检查是否设置了 cookie(我建议您为每个用户创建一个唯一的随机字符串,因为可以在客户端修改 cookie)
  2. 如果设置了cookie,则记录相应的用户
  3. 如果没有,请尝试会话中的基本日志
  4. 连接时,如果用户已选中该框,则注册 cookie
于 2013-02-15T08:39:31.210 回答