c# - ASP.NET 表单例份验证 : have to log in again when restarting application

标签 c# asp.net forms-authentication

我有一个使用 FormsAuthentication 的 ASP.NET 应用程序。每当我重新启动应用程序或 Web 服务器时,我的身份验证 token 就会无效,我必须重新登录。出了什么问题?

最佳答案

默认情况下,FormsAuthentication 通过让客户端存储数据的加密副本来验证每个请求的身份验证数据。加密 key 存储在Machine.config中。具体使用的key在<machineKey decryptionKey="YOUR KEY HERE"> .

如果您不提供解密 key ,应用程序启动时会自动生成一个解密 key 。由于它是随机生成的,因此每次重新启动应用程序时它都会不同。在验证阶段,FormsAuthentication 尝试解密身份验证数据,但失败。然后用户就不再登录。

有两种方法可以解决此问题。

  • Machine.config中提供机器 key 将为 FormsAuthentication 提供一个一致的 key 来使用,因此使用先前应用程序运行中的加密 cookie 进行验证将成功。
  • 使用<forms protection="None" ... /> Web.config 中的内容将禁用身份验证数据加密和验证。这是不安全的,仅适合开发,因为用户互相冒充对方是微不足道的。

关于c# - ASP.NET 表单例份验证 : have to log in again when restarting application,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16006354/

相关文章:

c# - 在 VS2005 中调试时,Page.Flush 出现错误代码为 0x80070057 的 System.Web.HttpException 的原因是什么?

c# - SetPrincipal (@User.Identity.Name) 来自 ASP.Net MVC 中的 cookie

forms-authentication - 如何使用 FormsAuthentication 授予对 url 的匿名访问权限?

c# - 如何在使用 random.range 时停止获取重复数字?

c# - 忽略 if 语句的设置函数 - 如果输入小于或等于 0,则应返回 0

c# - 动态更改 aspx 页面的文档类型

asp.net-mvc - ASP.NET MVC 表单例份验证 + 授权属性 + 简单角色

C#类设计: strategy pattern with some classes that have caching functionality?

c# - 用于 Web 服务安全的 SSL 加密 JSON 字符串

javascript - 从 VB.NET 背后的代码调用点击事件或 JQuery 函数