我正在尝试为我正在构建的ASP.NET MVC网站实现“记住我”登录功能。我正在尝试使用这种方法http://jaspan.com/improved_persistent_login_cookie_best_practice(参见“米勒的设计”在顶部附近)并让它在某种程度上发挥作用。
因此工作流程是:
我有这个工作正常,但是,如果用户从多个浏览器或计算机登录,它不能很好地工作。显然,不同的浏览器最终会将不同的安全密钥存储为cookie,因此工作流程变为:
我该如何解决这个问题?我是否需要在数据库中存储和维护多个密钥?我是否正确地走这条路?我注意到StackOverflow似乎管理这个,并记住我来自不同的浏览器和计算机。
答案 0 :(得分:1)
通过阅读您链接的文章,我觉得Miller的设计就是将随机字符串和用户名作为一对存储在与用户表不同的表中。通过使用随机字符串作为索引,您可以从同一个用户名同时进行多次登录,同时仍然可以很好地保护会话劫持。
您的描述表明您将随机字符串存储在用户表中,此时只允许一次登录。
答案 1 :(得分:0)
您需要Cookie中的第三项,即“系列”令牌。这将代表登录事件。每次用户登录系统时,它都会创建一个新系列,在他们注销或再次登录之前不会更改。你仍然有你的令牌,即安全密钥,在每个请求上都会更新。
以下是一些有助于实施的链接:
Database problems when allowing multiple browser persistent log ins