Lic*_*hte 1 asp.net asp.net-mvc-3 form-authentication
我正在使用angularjs和Web API.为了验证用户身份,我使用FormAuthenticationTicket(我只使用用户数据创建票证,加密它然后返回到客户端).当客户端发送请求时,他将此加密的cookie添加到其请求的标头中.
在远程服务器上,我解密了故障单,并验证该用户是否合法.在localhost上它完美无缺.在服务器上我有一个错误,并在很短的时间后没有识别用户.经过多次调试后,我注意到有时当服务器尝试解密票证时,他会遇到异常:"加密操作期间发生错误"
我搜索了这个错误,根据我的理解,错误是因为服务器尝试用另一个机器密钥解密票证.
想想也许在web.config中设置机器密钥会解决问题,但我发现的所有文章都在谈论早期的.net框架版本(我使用的是4.5.1).
这是我收到错误时:
FormsAuthenticationTicket fat = FormsAuthentication.Decrypt(enc_ticket);
Run Code Online (Sandbox Code Playgroud)
这是我的web.config:
<configuration><appSettings></appSettings>
<system.web> <compilation debug="true" targetFramework="4.5.1">
<assemblies>
<add assembly="System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
</assemblies>
</compilation>
<httpRuntime targetFramework="4.5.1" />
<customErrors mode="Off"/>
<trust level="Full" />
</system.web>
<system.webServer>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4992 次 |
| 最近记录: |