繁体   English   中英

防伪令牌问题已解决,但对项目的影响很奇怪

[英]Antiforgery token issue resolved but weird after effect on project

我有 2 个 Web 应用程序项目,都位于 TFS 源代码管理中。 第一个项目不会导致 AntiForgery 令牌出现问题。

这是错误

System.Web.WebPages.dll 中出现“System.InvalidOperationException”类型的异常,但未在用户代码中处理

附加信息:类型为“ http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier ”或“ http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/”的声明提供的 ClaimsIdentity 中不存在identityprovider '。 要通过基于声明的身份验证启用防伪令牌支持,请验证配置的声明提供程序是否在它生成的 ClaimsIdentity 实例上提供这两个声明。 如果配置的声明提供程序使用不同的声明类型作为唯一标识符,则可以通过设置静态属性 AntiForgeryConfig.UniqueClaimTypeIdentifier 对其进行配置。

找到的解决方案是添加

AntiForgeryConfig.UniqueClaimTypeIdentifier = ClaimsIdentity.DefaultNameClaimType;

到项目的 Global.asax.cs 文件中,该文件一直抛出该错误,所以我做了并解决了问题。

但是...现在这是奇怪的部分出现的地方...当我运行“固定”应用程序时,我以其他 Web 应用程序的用户身份登录。

所以我决定运行另一个应用程序并注意到我仍然登录,所以我注销并停止调试。 然后进入“固定”项目并注释掉

AntiForgeryConfig.UniqueClaimTypeIdentifier = ClaimsIdentity.DefaultNameClaimType;

并且项目运行正常。

显然,如果我不从其他应用程序注销,则会引发此错误。

我不知道这是怎么回事,甚至不知道为什么会发生这种情况,有什么想法吗?

您收到错误是因为 cookie 是针对localhost存储的,这意味着您运行的任何应用程序都将尝试使用它。 要解决此问题,您需要使您的应用程序使用的 cookie 的名称不同。 这是通过CookieName属性完成的。 App_Start文件夹中,编辑Startup.Auth.cs文件(如果您有不同的模板,它的名称可能不同)并添加一行以设置 cookie 名称:

app.UseCookieAuthentication(new CookieAuthenticationOptions
{
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
    LoginPath = new PathString("/Account/Login"),
    //snip
    CookieName = "NameOfYourAppForExample"
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM