MVC 5表单认证返回null的User.Identity.Name

4
在我的MVC 5应用程序中,身份验证未能对表单身份验证进行身份验证。页面正确重定向,但User.Identity.IsAuthenticated和User.Identity.Name值为空。
我的webconfig文件,
  <system.web>        
    <authentication mode="Forms">
          <forms cookieless="UseCookies" defaultUrl="~/" loginUrl="~/user/signin"  name="MYAPPWeb" timeout="21600" slidingExpiration="true"/>
        </authentication>

用户控制器,

 [HttpPost]
        [AllowAnonymous]
        [ValidateAntiForgeryToken]
        public ActionResult SignIn(SignInViewModel user)
        {

                        UserDTO userObj;
                        using (var services = new ServiceFactory())
                        {                            
                            userObj = services.UserManagement.ValidateLoginDetails(ConfigHelper.EnvironmentString, user.TenantName, user.Username, user.Password);
                        }
                                string userID = userObj.UserID.ToString();
                                //FormsAuthentication.RedirectFromLoginPage(userID, user.RememberMe);
                                FormsAuthentication.SetAuthCookie(userID.ToString(),true);

                                FormsAuthentication.RedirectFromLoginPage(userID, false); //DO NOT REMEMBER ME

}

HomeController (默认页面)

 public ActionResult Index()
        {

            bool x = User.Identity.IsAuthenticated; //false?
            string y = User.Identity.Name; //null?

return View();
}

看起来非常简单,我有遗漏什么吗?请帮忙!

注意:
创建项目时选择了Windows身份验证。它创建了一些Owin身份验证相关的配置CS文件(startup.auth.cs)。我已将其删除并添加了上述appsetting条目,因为需要停止加载Owin程序集。

<add key="owin:AutomaticAppStartup" value="false"/>
1个回答

5
如果您的项目默认使用Owin身份验证,它将从项目中删除表单身份验证。如果您查看Web配置文件,您可能会看到:

<remove name="FormsAuthentication" />

配置。

只需要删除它。

我曾经遇到同样的问题,删除后问题得到解决。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接