我有一个使用 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/