首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Rails 3中实现"记住我"功能?

在Rails 3中实现"记住我"功能,可以使用Devise、Authlogic等第三方库,也可以手动实现。这里我们手动实现一个简单的"记住我"功能。

  1. 添加一个布尔类型的字段remember_token到用户表(User):
代码语言:ruby
复制
rails generate migration AddRememberTokenToUsers remember_token:boolean
rake db:migrate
  1. 在User模型(app/models/user.rb)中添加以下代码:
代码语言:ruby
复制
class User< ActiveRecord::Base
  attr_accessor :remember_me

  before_save :set_remember_token

  private

  def set_remember_token
    if remember_me == "1"
      self.remember_token = true
    end
  end
end
  1. 在用户登录表单中添加一个"记住我"复选框(app/views/sessions/new.html.erb):
代码语言:html
复制
<%= form_for(:session, url: login_path) do |f| %>
  <%= f.label :email %>
  <%= f.text_field :email %>
  <%= f.label :password %>
  <%= f.password_field :password %>
  <%= f.label :remember_me, "记住我" %>
  <%= f.check_box :remember_me %>
  <%= f.submit "登录" %>
<% end %>
  1. 在SessionsController(app/controllers/sessions_controller.rb)中添加以下代码:
代码语言:ruby
复制
class SessionsController< ApplicationController
  def create
    user = User.find_by(email: params[:session][:email].downcase)
    if user && user.authenticate(params[:session][:password])
      if params[:session][:remember_me] == "1"
        cookies.permanent[:remember_token] = user.remember_token
      else
        cookies[:remember_token] = user.remember_token
      end
      redirect_to user
    else
      flash.now[:error] = "邮箱或密码错误"
      render 'new'
    end
  end

  def destroy
    cookies.delete(:remember_token)
    redirect_to root_url
  end
end
  1. 在ApplicationController(app/controllers/application_controller.rb)中添加以下代码:
代码语言:ruby
复制
class ApplicationController< ActionController::Base
  before_action :remember_user

  private

  def remember_user
    @current_user ||= User.find_by(remember_token: cookies[:remember_token])
  end
end

现在,当用户勾选"记住我"复选框时,系统会在登录成功后将一个临时的cookie(remember_token)存储在用户浏览器中,并将其与用户账户关联。当用户再次访问网站时,系统会自动登录用户,直到用户手动注销或者cookie过期。

注意:这个实现方式仅供参考,实际生产环境中建议使用更安全、更可靠的第三方库来实现"记住我"功能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

这是一种有关记住功能的新实现方式

在传统的前后端不分离项目中,大家在登录界面应该经常能看到记住这个功能,这个功能本质上是为了让用户能在一段较长时间内不在重复登录,在以前的实现方案中,大家多使用 cookie 实现,本文给大家介绍在引入了...本文使用 newbeepro 项目作为示例,给大家演示记住功能的具体实现。...名称是 maxInactiveInterval,它就是用户 session 的有效期属性,我们可以通过改变 maxInactiveInterval 的属性值来延长用户 session 的有效期,以此来实现记住功能...总结一下本文给大家讲解了在使用 spring-session-redis 的项目中,如何通过延长用户 session 的有效期来达到记住功能的一致效果。...大家在学习本文后,也可以把记住功能应用到自己的项目中,本文实例代码都在 newbeepro 项目中可以找到。

17810
  • 【实战】是如何在输入框实现@ At功能

    作者:InfinityTomorrow 授权转载 链接:https://juejin.cn/post/6982251438332182542 一、前言 最近接手了一个需求,在评论框中实现 @At通知用户的功能...这个可以说是的知识盲点了,但是其实很多应用都有这类功能了,例如:QQ空间、微博搜索、企业微信的TAPD...但是一看就不想不做~(产品经理ps:为什么别人可以做你不可以做?)...,光标、输入法处理 基于contenteditable技术实现@选人功能 富文本 (例:企业微信TAPD) 支持 文本、富文本、图片、拥有丰富的配置与强大的API。...三、准备工作 本功能是基于wangeditor富文本编辑器来实现的,本文wangeditor版本4.3.0 npm i wangeditor --save 初始化一下项项目结构~ ...就就可以做到:随时@ 随时插入的功能拉~ 五、Android、IOS、Web显示多端一致 每个端使用富文本都是不一样的、那我们应该如何做到统一数据统一呢?

    2.5K20

    springsecurity框架的学习,根据操作修改后台ssm项目进行学习,实现记住功能(原理分析)(八)

    这个记住功能是springsecurity框架提供的,我们拿过来用就可以了。...这个 记住 的源码在这个过滤器的父类里面 ? 我们进入这个父类,找到认证成功之后的方法,看这个方法里面的东西 ?...这个就是一个默认的参数,也就是前端那个记住的按钮的name属性的值,就是这个,记住,以后我们要在前段写的时候,就是这个名字 现在继续的看这个方法的意思 ?...必须是以上源码里面的某一个,现在我们写的是true 只有以上的都写对了,才可以实现记住功能 以上都按照框架的规定写对了之后,我们看源码 ?...都写对了,rememberMeRequeste()这个方法返回是false的话,直接打印这句话,也就是不通过 如果返回是true,也就是记住功能返回是true,那么就走下一个方法,onLoginSuccess

    36010

    何在CentOS 6.5上使用 Nginx+Passenger 部署Railes应用程序

    本文的主题是Rails,以及如何在线获取基于Ruby On Rail的 Web应用程序 - 这是最简单,最快捷的方式。...请记住: “处理”连接在技术上意味着不要丢弃它们并能够用某些东西为它们提供服务。您仍然需要您的应用程序和数据库正常运行才能让Nginx为客户端提供非错误消息的响应。...没有服务器的同学可以在这里购买,不过个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后在购买服务器。...一些我们需要在本教程(libyaml-devel的响应,Nginx等)的包都没有官方的CentOS存储库中找到。...注意:本节是我们专门的文章如何在CentOS 6.5上安装Ruby 2.1.0的摘要。

    5K20

    CentOS7安装GitLab、汉化、邮箱配置及使用

    一.GitLab简介 GitLab是利用Ruby On Rails开发的一个开源版本管理系统,实现了一个自托管的Git项目仓库,是集代码托管,测试,部署于一体的开源git仓库管理软件,可通过web...它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后需要的时候查找。 Git的家族成员: Git:是一种版本控制系统,是一个命令,是一种工具。...Gitlib:是用于实现Git功能的开发库。 Github:是一个基于Git实现的在线代码托管仓库,公开项目是免费的,也可以付费创建私人项目。...需要至少4GB的可寻址内存(RAM交换)来安装和使用GitLab,操作系统和任何其他正在运行的应用程序也将使用内存,因此请记住,在运行GitLab之前,您至少需要4GB的可用空间。...] = 'xxxx@xx.com' 大家如果在安装和使用的过程有遇到什么问题,可以在的个人博客里留言,希望对大家有些许帮助。

    1.7K70

    CentOS7安装GitLab、汉化、邮箱配置及使用

    一.GitLab简介 GitLab是利用Ruby On Rails开发的一个开源版本管理系统,实现了一个自托管的Git项目仓库,是集代码托管,测试,部署于一体的开源git仓库管理软件,可通过web界面来进行访问公开的或私人项目...它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后需要的时候查找。 Git的家族成员: Git:是一种版本控制系统,是一个命令,是一种工具。...Gitlib:是用于实现Git功能的开发库。 Github:是一个基于Git实现的在线代码托管仓库,公开项目是免费的,也可以付费创建私人项目。...需要至少4GB的可寻址内存(RAM交换)来安装和使用GitLab,操作系统和任何其他正在运行的应用程序也将使用内存,因此请记住,在运行GitLab之前,您至少需要4GB的可用空间。...如果使用更少的内存,GitLab将在重新配置运行期间给出奇怪的错误,用虚拟机来分别新建1G,2G内存的CentOS系统来装GitLab,确实非常捉襟见肘啊,伤不起。

    6.4K00

    何在Ubuntu 18.04上使用RVM安装Ruby on Rails

    没有服务器的同学可以在这里购买,不过个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器。 安装 使用RVM安装Ruby on Rails的最快方法是运行以下命令。...请注意, rails_version 仅引用版本号,5.1.6。...安装JavaScript运行时 一些Rails功能(例如Asset Pipeline)依赖于JavaScript的运行时。我们将使用软件包管理器安装Node.js以提供此功能。...结论 我们已经介绍了如何在这里安装RVM和Ruby on Rails的基础知识,以便您可以使用多个Ruby环境。...为了在Ruby on Rails应用程序中实现更多可伸缩性,集中化和控制,您可能希望将它与PostgreSQL或MySQ一起使用,而不是使用默认的sqlite3数据库。

    8.8K00

    基于Docker在Win10平台搭建Ruby on Rails 6.0框架开发环境

    :搭个环境都这么费劲,为啥不用Django、Laravel亦或者是Springboot呢?...starefossen/ruby-node     拉取镜像成功后,启动容器并且进入命令行,记住用挂载命令把当前目录共享到Docker容器内部,不会设置共享文件夹的同学可以参照这篇文章:上穷碧落下凡尘...在容器内安装Rails6.0成功之后,直接在容器内建立项目 rails new .    ...想说的是,时至今年,全球依然有超过一亿的网站和后台服务由Rails驱动,其中不乏国际知名企业,:Airbnb、Basecamp、Github等,尽管Php和Python的使用范围比Ruby更广,但其最受欢迎的两个框架...一既往,专注web,专注产品的Rails6.0在新的时代里一定会继往开来、再创辉煌。

    1.5K20

    何在Ubuntu 14.04上使用MySQL和Ruby on Rails应用程序

    如果您的应用程序需要客户端/服务器SQL数据库(PostgreSQL或MySQL)的可伸缩性,集中化和控制(或任何其他功能),则需要执行一些额外的步骤才能启动并运行它。...本教程将向您展示如何在Ubuntu 14.04服务器上设置开发Ruby on Rails环境,以允许您的应用程序使用MySQL数据库。首先,我们将介绍如何安装MySQL和MySQL适配器gem。...没有服务器的同学可以在这里购买,不过个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器。 本教程要求具有可用的Ruby on Rails开发环境。...安装MySQL Gem 在您的Rails应用程序可以连接到MySQL服务器之前,您需要安装MySQL适配器。在mysql2创业板提供了这个功能。...创建新的Rails应用程序 在主目录中创建一个新的Rails应用程序。

    4.9K00

    架构之美:教你如何分析一个接口?

    相信没有人能把所有接口细节记住, 如何才能理清繁杂的接口呢? 找主线,看风格。 找主线,你需要找到一条功能主线,建立起对这个项目结构性的认知,而不是一上来就把精力放在每个接口的细节。...Rails一个重要的设计理念就是约定优于配置,无需配置,按照缺省的风格就可以完成基本的功能,这样的理念贯穿在Rails各个接口的设计中。...当年接触Rails时,最让感到震惊的是它的数据库查询方式,与传统开发的风格截然不同,就这么简单的一句: Article.find_by_title("foo") 要知道,那个时候用Java写程序,即便是想做一个最简单的查询...而 Rails用一句轻描淡写find_by就解决了所有的问题,而且,这个find_by_title方法还不是实现的,Rails会替你自动实现。...Article.find_by_title_and_author("foo", "bar") 从功能的角度说,这样的查询在功能上是完全一样的,但显然Rails程序员和Java程序员的工作量是天差地别的,

    2.2K20

    框架分析(6)-Ruby on Rails

    框架分析(6)-Ruby on Rails 主要对目前市面上常见的框架进行分析和总结,希望有兴趣的小伙伴们可以看一下,会持续更新的。希望各位可以监督,我们一起学习进步。...Rails提供了一套完整的测试框架,包括单元测试、集成测试和功能测试等。这些测试工具使得编写和运行测试变得简单,并可以与持续集成工具集成,以实现自动化测试。...丰富的插件生态系统 Rails拥有一个庞大的插件生态系统,开发人员可以通过安装插件来扩展框架的功能。这些插件提供了各种功能身份验证、文件上传、缓存等,可以大大加快开发速度。...安全性 Rails框架内置了一些安全性功能跨站点请求伪造(CSRF)保护、参数过滤和安全的cookie处理等。这些功能可以帮助开发人员减少常见的Web安全漏洞。...灵活性受限 Rails框架提供了一套固定的开发模式和规范,这在一定程度上限制了开发人员的灵活性。有时候,如果需要实现一些非常定制化或特殊的功能,可能需要绕过框架的约定,编写更多的自定义代码。

    27720

    后端框架有哪些?8个流行的后端框架推荐

    大家好,又见面了,是你们的朋友全栈君。 后端框架有哪些?8个流行的后端框架推荐 后端框架 在选择要使用的后端框架时,有许多选项可用。...他们负责数据库系统的实现,确保各种Web服务之间的正确通信,生成后端功能等。 8个流行的后端框架列表 在这个后端框架列表中,我们不想坚持使用单一编程语言。相反,我们希望展示各种语言的后端框架。...特征 高度可定制 可扩展 广泛的社区和文档 4.Ruby on Rails Ruby on Rails Ruby on Rails是一个用Ruby编程语言编写的服务器端Web框架,Ruby鼓励使用设计模式...,MVC和DRY。...在选择后端框架之前,您应该考虑几个重要因素,以下是一些要记住的事项。 学习曲线:每个框架在命名,目录结构等方面都有不同之处。如果您已经熟悉特定的编程语言,那么您可能希望坚持使用该语言的框架。

    7.7K10

    如何使用GitLab搭建属于自己的代码管理平台

    大家好,是Mandy。今天分享的主题内容是如何使用GitLab搭建属于自己的代码管理平台。...为什么会单独分享这篇文章呢,相信在很多的开发同学任职的公司中,都用到了gitlab来做代码管理平台,同时结合GitLab的一些自动化功能实现devops的功能。...对于个人开发者使用GitLab,不仅能够管理自己的代码,同时也能学到GitLab与其他的系统实现一些自动化功能,这将是一个不错的选择。...如何搭建 接下来,将全面的演示如何在Linux上搭建GitLab。整体来说是非常的简单,整篇文章都是采用Docker来搭建,毕竟现在Docker的使用不管是个人还是企业都是非常主流的技术栈。...7、–name:该参数是为了给容器取一个名称,记住这个名称要不能重复。例如你本地有一个名字叫做A的容器,就不能取同样名称的容器。

    45531

    如何使用Gitlab搭建属于自己的代码管理平台

    大家好,是Mandy。今天分享的主题内容是如何使用GitLab搭建属于自己的代码管理平台。...为什么会单独分享这篇文章呢,相信在很多的开发同学任职的公司中,都用到了gitlab来做代码管理平台,同时结合GitLab的一些自动化功能实现devops的功能。...对于个人开发者使用GitLab,不仅能够管理自己的代码,同时也能学到GitLab与其他的系统实现一些自动化功能,这将是一个不错的选择。如何搭建接下来,将全面的演示如何在Linux上搭建GitLab。...7、–name:该参数是为了给容器取一个名称,记住这个名称要不能重复。例如你本地有一个名字叫做A的容器,就不能取同样名称的容器。...这里假设域名是a.baidu.com。2、ssh方式:ssh适用于代码同步,这里也需要配置成域名或者IP的方式。

    50031

    用selenium自动化验收测试

    用 Selenium 自动化验收测试 如何使用 Selenium 测试工具对 Ruby on Rails 和 Ajax 应用程序进行功能测试 文档选项 将此页作为电子邮件发送 讨论 样例代码 拓展...目前,已经有人在致力于将 Selenium 集成到 Ruby on Rails 中,但是在撰写本文之际,这个集成版本还没有被发布。...回页首 现实中的需求 在接下来的两节(现实中的需求 和 现实中的用例)中,将描述如何在现实场景中使用 Selenium,并针对用 Ruby on Rails 和一点儿 Ajax 技术编写的一个简单的股票报价查看器应用程序编写...应该看到 Rails 成功启动了, 图 1 所示。 图 1. 从命令提示符下运行 Ruby on Rails 回页首 现实中的用例 在本节中,将列出示例应用程序的用例。...如果没有 500 毫秒的暂停,测试将失败( 图 4 所示)。 图 4. 失败的查看股票细节测试用例 pause 命令还测试 Ajax 功能的非功能性需求。

    6.2K30
    领券