User.Identity.Name为空

时间:2016-07-07 22:12:12

标签: c# asp.net asp.net-mvc forms-authentication

我有一个简单的ASP.NET MVC应用程序,我使用表单身份验证。单击“登录”按钮时,我设置了表单auth cookie。

FormsAuthentication.SetAuthCookie("userid",false);

问题是后续请求的System.Web.HttpContext.Current.User.Identity始终显示IsAuthenticated = false,而Name为空。 [Authorize]属性因此而失败。但是,我可以看到后续请求在标头中有cookie .ASPXAUTH。我的Web.Config文件有<authentication mode="Forms" />

可能是什么问题?

2 个答案:

答案 0 :(得分:0)

在你的启动代码中,你有类似的东西:

app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
            LoginPath = new PathString("/account/login"),
            Provider = new CookieAuthenticationProvider
            {
                // Enables the application to validate the security stamp when the user logs in.
                // This is a security feature which is used when you change a password or add an external login to your account.  
                OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, User, int>(
                    validateInterval: TimeSpan.FromMinutes(30),
                    regenerateIdentityCallback: (manager, user) => user.GenerateUserIdentityAsync(manager),
                    getUserIdCallback: (identity) => identity.GetUserId<int>()
                )
            }
        });

当我遇到类似的问题时,我很确定这是解决方案,但是几年前,所以我不记得100%。

答案 1 :(得分:0)

我注意到我的Web.config中有以下内容。

    <modules>
      <remove name="FormsAuthentication" />
    </modules>

我对此发表了评论:

  

<!--<remove name="FormsAuthentication" /> - &GT;

它开始工作了。