asp.net - 使用表单例份验证注销从不同浏览器/计算机登录的用户

标签 asp.net wcf-data-services asp.net-authentication

考虑使用持久 cookie 进行表单例份验证的情况。

如果同一用户使用两个不同的浏览器或两台不同的机器登录,当用户从其中一个浏览器/机器注销时,他是否仍然可以从另一个浏览器/机器登录?

通常,Web 应用程序如何处理这种情况?

最佳答案

我在很大程度上同意斯里尼瓦斯的观点。这是我对这个问题的看法

  1. 登录时创建一个仅 HTTP 的 cookie,其中包含登录时生成的 guid,这将是您的浏览器/计算 secret 钥。关闭浏览器将删除 cookie
  2. 获取用户 ID
  3. 保留用户表中的对,例如:user:a, key:12345
  4. 用户通过身份验证后的后续请求身份验证算法
  5. 获取数据库中当前用户 ID 最后使用的 key
  6. 检查 cookie 是否存在,如果不存在,则完全未进行身份验证
  7. 检查 cookie 值是否与数据库中的值相同,如果不同则完全取消身份验证

使用此方法,任何后续登录都将导致所需的重新身份验证并使任何其他身份验证无效。实际上强制用户仅使用 1 个浏览器/计算机

关于asp.net - 使用表单例份验证注销从不同浏览器/计算机登录的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14233795/

相关文章:

asp.net - 加密 ASP.NET MVC2 中的用户输入

asp.net-mvc - ASP.NET MVC 4 到 WCF 数据服务

web-services - Windows Phone 7 - 加速数据获取的最佳实践

c# - 使用 asp.net core mvc 中的身份验证保护 wwwroot 中的某些文件夹

c# - 在 C# 中反序列化嵌套 JSON 数组

c# - 从经典 ASP 到 ASP.NET 的代码转换

c# - ASP.NET-MVC 项目中的 ADO.NET 数据服务

asp.net - 如何在没有登录控制的情况下使用表单例份验证?

ASP.Net - 当前跟踪状态和 session 变量的最佳实践是什么?

c# - 为什么在将对象转换为整数时会出现 InvalidCastException?