我有一个网络服务,用户可以登录服务并提供不记名 token 。
在本地一切都很好,但在服务器(共享主机,Windows 2012,iis 8.5)20分钟后, token 已过期!!!
我的 AccessTokenExpireTimeSpan 是:
AccessTokenExpireTimeSpan = TimeSpan.FromDays(900),
同样在我的第一个请求中,我给出了大约 5 秒的延迟。有什么问题吗?
最佳答案
我假设您在生产中拥有多个服务器。 ASP.NET Identity 使用服务器的机器 key 来生成 token 承载。因此,20 分钟后,您已被“重定向”到具有另一个机器 key 的另一台服务器。
一种解决方案是覆盖服务器的机器 key 。在 web.config 中设置机器 key 。所以所有服务器都有相同的机器 key 。
<machineKey validationKey="534766AC57A2A2F6A71E6F0757A6DFF55526F7D30A467A5CDE102D0B50E0B58D613C12E27E7E778D137058E" decryptionKey="7059303602C4B0B3459A20F9CB631" decryption="Auto" validation="SHA1"/>
如何生成和设置机器 key :
https://technet.microsoft.com/sv-se/library/cc755177%28v=ws.10%29.aspx
http://docs.orchardproject.net/Documentation/Setting-up-a-machine-key
解决方案 2 - 如果无权访问 IIS
如果您不想修改 IIS 上的 machineKey 或无权访问它,您可以通过验证 startup.cs 中的默认设置来轻松验证 ASP.NET 身份 token 提供程序文件。
您可以在这里找到这样的示例:https://github.com/eashi/Samples/blob/master/OAuthSample/OAuthSample/App_Start/Startup.Auth.cs
关于asp.net 身份不记名 token 在 20 分钟后过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29143794/