首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Rails 3中实现“记住我”功能?

如何在Rails 3中实现“记住我”功能?
EN

Stack Overflow用户
提问于 2011-10-05 15:28:28
回答 5查看 6.7K关注 0票数 2

在Rails3应用程序中实现“记住我”功能的最佳实践是什么?

当用户登录时,我将会话信息(会话id +用户id)存储在数据库中,目前我不想使用任何插件。

任何指针或代码样本将非常感谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-10-05 15:38:54

我一直在阅读Rails教程,它有一个关于记住我的实现

您可以检查一些提示(实现方式可能与您的不同)

http://ruby.railstutorial.org/book/ruby-on-rails-tutorial#sec:remember_me

票数 2
EN

Stack Overflow用户

发布于 2015-05-02 12:26:37

您只需设置已签名cookie的过期时间即可完成此操作。(签名的cookie是防篡改的,就像Rails提供的session cookie一样。)

代码语言:javascript
复制
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
票数 8
EN

Stack Overflow用户

发布于 2011-10-05 17:07:17

Railscasts在实现这一点上有an episode,在实现这些特性via BDD with RSpec and Capybara方面也有很好的方法。

当用户登录时,我将会话信息(会话id +用户id)存储在数据库中

我相信这是一种方法,上面的强制转换通过向每个User帐户颁发一个唯一的身份验证令牌来对cookies执行相同的操作。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7658011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档