我有一个Web服务,用户可以登录该服务并提供承载令牌。
在本地一切都很好,但是在服务器(共享主机,Windows 2012,IIS 8.5)20分钟后,令牌已过期!
我的AccessTokenExpireTimeSpan是:
AccessTokenExpireTimeSpan = TimeSpan.FromDays(900),
同样在我的第一个请求中,我给出了大约5秒的延迟。有什么问题?
我假设您在生产中有多台服务器。ASP.NET Identity正在使用服务器的机器密钥来生成令牌承载。因此,在20分钟之后,您已使用另一台机器密钥“重定向”到另一台服务器。
一种解决方案是覆盖服务器的机器密钥。通过在web.config中设置机器密钥。因此,所有服务器都具有相同的机器密钥。
<machineKey validationKey="534766AC57A2A2F6A71E6F0757A6DFF55526F7D30A467A5CDE102D0B50E0B58D613C12E27E7E778D137058E" decryptionKey="7059303602C4B0B3459A20F9CB631" decryption="Auto" validation="SHA1"/>
如何生成和设置机器密钥:
https : //technet.microsoft.com/sv-se/library/cc755177%28v=ws.10%29.aspx http://docs.orchardproject.net/Documentation/Setup-up机器钥匙
解决方案2-如果无法访问IIS
如果您不想在IIS上修改machineKey或无法访问它,则可以通过查看startup.cs文件中的默认设置来轻松地实现ASP.NET Identity令牌提供程序的实现。
您可以在此处找到一个示例:https : //github.com/eashi/Samples/blob/master/OAuthSample/OAuthSample/App_Start/Startup.Auth.cs
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句