我是 rails 新手,之前我曾与 Yii(PHP,MVC 框架)进行过广泛的合作。Yii,允许web用户方法设置状态变量,例如
Yii::app()->user->userid
Yii::app()->user->name
我的 rails 应用程序需要存储有关用户的类似数据,以便随意访问。用户姓名、角色和头像名称等数据。我正在使用 authlogic 并使用以下函数将用户的状态存储在会话变量中:
def login
@user_session = UserSession.new(:email => params['email'] , :password => params['password'],:remember_me => params['remember_me'] )
@user = User.where(:email => params['email']).first
if @user_session.save && @user.access_status = 'active'
session[:user_name] = @user.name
session[:user_pic] = @user.profile_pic_file_name
session[:user_level] = @user.user_level
redirect_to :action => 'index'
else
...
end
end
这工作正常,但我决定添加“记住我”功能。在我关闭浏览器并重新打开它后,我的会话变量分配(名称、角色和图片名称)不再存在,并且我得到所有 nil 值。用户 ID 仍然存在,并且用户仍然登录。
实现这一点的最佳方法是什么?我可以在 authlogic 本身中设置值(因为即使在浏览器关闭后 authlogic 确实保留了用户 ID)还是应该求助于存储在浏览器上的 cookie?我的应用程序没有非常高的安全问题或敏感数据。
我正在寻找一个优雅的解决方案,因为我打算存储的数据会经常在多个地方使用。