首页 / 知识
关于ruby:在Rails应用程序中实现“记住我”
2023-04-11 13:36:00

Implementation of “Remember me” in a Rails application我的Rails应用程序有一个带有"记住我"复选框的登录框。 选中该复选框的用户即使关闭浏览器也应保持登录状态。 我通过将其ID存储在用户的会话中来跟踪用户是否已登录。 但是会话在Rails中作为会话cookie实现,但不是持久性的。 我可以使它们持久化:
但这似乎是一种骇客,对于如此常见的功能而言令人惊讶。 有什么更好的办法吗? 编辑
Gareth的答案相当不错,但是我仍然希望熟悉Rails 2的人提供答案(因为它是唯一的 您几乎应该确定不会延长会话cookie的寿命。 尽管没有专门讨论Rails,但本文还是花了一些时间来解释"记住我"的最佳实践。 总之,您应该:
作者还建议使随机值无效,并在每次登录时重置cookie。我个人不喜欢那样,因为那样一来您就无法保持登录两台计算机上的站点。我倾向于确保我的密码更改功能也重置随机值,从而锁定其他计算机上的会话。 最后一点,他给出的关于使某些功能(密码更改/电子邮件更改等)无法用于自动身份验证的会话的建议非常值得遵循,但在现实世界中很少见。 我花了一段时间思考这个问题,并得出了一些结论。默认情况下,Rails会话cookie是防篡改的,因此您不必担心在客户端上修改cookie。 这是我所做的:
当用户选中"记住我"框时,我只是将会话[:expireson]日期设置为登录+ 2周。因为Rails会话cookie是防篡改的,所以没有人可以窃取该cookie并永远保持登录状态或伪装成另一个用户。 我建议您要么看一下具有此实现的RESTful_Authentication插件,要么只是切换您的实现以使用RESTful Authentication_plugin。在Railscasts中有关于如何使用此插件的很好的解释: railscasts#67 restful_authentication 这是插件本身的链接 restful_authentication restful_authentication插件对此有一个很好的实现: http://agilewebdevelopment.com/plugins/restful_authentication 请注意,您不想保留他们的会话,而只想保留他们的身份。当他们返回您的网站时,您将为他们创建一个新的会话。通常,您只需为用户分配一个GUID,将其写入他们的cookie,然后在他们回来时使用它来查找他们。不要使用他们的登录名或用户ID作为令牌,因为很容易猜到令牌,并允许狡猾的访问者劫持其他用户的帐户。 我会去Devise寻求出色的Rails身份验证解决方案。 这对我来说就像是一种魅力: http://squarewheel.wordpress.com/2007/11/03/session-cookie-expiration-time-in-rails/ 现在,我的CookieStore会话将在两周后到期,因此用户必须再次提交其登录凭据才能持续登录另外两周。 基本上,它很简单: |
最新内容
相关内容
python如何获取用户输入
python如何获取用户输入,培训,字符串,整数,类型,文本,文档,用户,小数点,位数,以上,python整数输入#!/usr/bin/python3usr_ip=input("Enteran关于vb.net:通过文件资源管理器在我
关于vb.net:通过文件资源管理器在我的应用程序中打开文件,关于vb.net:通过文件资源管理器在我的应用程序中打开文件,应用程序,自定义,关于错误跟踪:FogBugz与OnTime相比
关于错误跟踪:FogBugz与OnTime相比,关于错误跟踪:FogBugz与OnTime相比,易用性,稳定性,我对,发表意见,FogBugz compared to OnTime有没MS Access有没有办法抓住当前的Act
MS Access有没有办法抓住当前的Active Directory用户?,MS Access有没有办法抓住当前的Active Directory用户?,系统,审核,规范,公司,IsiPhone Web应用程序,模板,框架?
iPhone Web应用程序,模板,框架?,iPhone Web应用程序,模板,框架?,应用程序,站点,用于,网页,iPhone web applications, templates, framework关于unix:允许用户设置SSH隧道,但无
关于unix:允许用户设置SSH隧道,但无其他设置,关于unix:允许用户设置SSH隧道,但无其他设置,用户,身份,我想,该用户,Allow user to set up用户界面设计
用户界面设计,用户界面设计,用户界面,我是,转到,使其,User Interface Design创建用户界面时,您要转到哪里? 我是程序员,而不是设计师。关于体系结构:我应该如何构建Java应
关于体系结构:我应该如何构建Java应用程序,将类放在哪里?,关于体系结构:我应该如何构建Java应用程序,将类放在哪里?,应用程序,支持,困惑,在Web应用程序上执行压力测试?
在Web应用程序上执行压力测试?,在Web应用程序上执行压力测试?,应用程序,主页,写了,简单,Performing a Stress Test on Web Application关于用户界面:图标:没有设计技能的开
关于用户界面:图标:没有设计技能的开发人员如何使他/她的应用程序图标看起来漂亮?,关于用户界面:图标:没有设计技能的开发人员如何使他/我应该如何将文件加载到Java应用程
我应该如何将文件加载到Java应用程序中?,我应该如何将文件加载到Java应用程序中?,文件,应用程序,加载,文本,How should I load files i关于身份验证:用于登录ID的内容是什
关于身份验证:用于登录ID的内容是什么?,关于身份验证:用于登录ID的内容是什么?,帐户,重写,企业,设计阶段,What to use for login ID?我们