如果我没记错的话,谷歌等公共服务通常会提供两周的登录流程。
这样,即使关闭标签页,浏览器甚至重新启动操作系统,用户仍然可以作为主题访问网页,而无需重新登录。
问题是:
答案 0 :(得分:2)
Shiro或Web会话将保留身份验证状态,即,如果用户除了其他状态(会话属性等)之外已经实际证明了他们的身份。
Shiro中的“记住我”功能仅设置一个身份cookie,告诉服务器最终用户可能是谁,但此cookie 不保留身份验证状态。 Shiro的文档中清楚地解释了这两种不同方法的原因:Remembered vs. Authenticated。
我不确定Google如何实施他们的解决方案,但我相当确定它不是基于会话的。 Google的目标是在可能的情况下成为服务器无状态 - 为GMail维护数百万个会话(例如)是他们可能不会处理的技术开销。 GMail可能会在browser local storage(或某些自定义等效项)中保留身份验证状态,以确保所有状态都在客户端。
无论如何,如果我不得不猜测,它可能会这样:
当您使用服务器进行身份验证时,Google可能会在此时获取有关您和您的计算机的大量信息(时间,IP地址,浏览器信息,用户ID等)并计算加密哈希值(也称为“摘要”)该信息并将哈希值设置为cookie或浏览器本地存储。
下次访问服务器时,他们可能会查看该值,对当前请求中的相关信息执行相同的加密哈希,如果他们计算的哈希值与cookie中的哈希值匹配,则可以确定它仍然是您在特定计算机上,并允许您在不登录的情况下使用该应用程序。
这种行为就像Shiro Remember Me ++。他们记住用户不使用会话的用户,还有其他可以让他们更确定用户确实是他们期望的信息。
要使用Shiro来表示相同的行为,那么是的,您必须将会话时间延长2周。不同之处在于,我对谷歌解决方案的猜测根本不需要任何服务器状态,而会话则可以。