在Rails3应用程序中实现“记住我”功能的最佳实践是什么?
当用户登录时,我将会话信息(会话id +用户id)存储在数据库中,目前我不想使用任何插件。
任何指针或代码样本将非常感谢。
发布于 2011-10-05 15:38:54
我一直在阅读Rails教程,它有一个关于记住我的实现
您可以检查一些提示(实现方式可能与您的不同)
http://ruby.railstutorial.org/book/ruby-on-rails-tutorial#sec:remember_me
发布于 2015-05-02 12:26:37
您只需设置已签名cookie的过期时间即可完成此操作。(签名的cookie是防篡改的,就像Rails提供的session cookie一样。)
class SessionsController < ApplicationController
def create
...
user = User.authenticate(params[:email_address], params[:password])
if params[:remember_me]
cookies.signed[:user_id] = { value: user.id, expires: 2.weeks.from_now }
else
# expires at the end of the browser session
cookies.signed[:user_id] = user.id
end
end
def destroy
cookies.delete :user_id
end
end
class ApplicationController < ActionController::Base
...
def current_user
User.find(cookies.signed[:user_id])
end
end发布于 2011-10-05 17:07:17
Railscasts在实现这一点上有an episode,在实现这些特性via BDD with RSpec and Capybara方面也有很好的方法。
当用户登录时,我将会话信息(会话id +用户id)存储在数据库中
我相信这是一种方法,上面的强制转换通过向每个User帐户颁发一个唯一的身份验证令牌来对cookies执行相同的操作。
https://stackoverflow.com/questions/7658011
复制相似问题