在ASP.Net MVC反伪造系统 [英] Anti forgery system on ASP.Net MVC

查看:458
本文介绍了在ASP.Net MVC反伪造系统的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我把下面的code:

When I'm putting following code:

 @using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm" }))
    {
        @Html.AntiForgeryToken()
        <a href="javascript:document.getElementById('logoutForm').submit()">Log off</a>
    }

@Html.AntiForgeryToken()

部分是thrownig以下异常:

part is thrownig following exception:

类型'System.Web.Security.FormsIdentity的身份提供标记IsAuthenticated = true,但没有name的值。默认情况下,防伪系统要求所有验证的身份有一个独特的名称。如果这是不可能为这个身份提供一个独特的名称,考虑静态属性AntiForgeryConfig.AdditionalDataProvider设置为一个类型的一个实例,可以提供一些形式对当前用户的唯一标识符的

我检查了很多例子,并试图在网上搜索,但我找不到任何解释。我想知道为什么这个错误发生在我身上?而如何解决它使用防伪。

I've checked many examples and tried to search the web, but I cannot find any explanation. I would like to know why this error happens to me? And how to solve it to use antiforgery.

推荐答案

它告诉你,它不会尽管被登录,因为工作, Membership.GetUser()。用户名不提供可用于散列的名称。

It's telling you that it won't work because despite being logged in, Membership.GetUser().UserName is not providing a name that can be used for hashing.

所以,你真正的问题是,为什么我的登录用户没有用户名?

So your real problem is, "How come my logged in user doesn't have a username?"

这篇关于在ASP.Net MVC反伪造系统的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆