C# Net MVC 5表单身份验证在代码隐藏中获取用户名

C# Net MVC 5表单身份验证在代码隐藏中获取用户名,c#,asp.net-mvc,cookies,asp.net-mvc-5,C#,Asp.net Mvc,Cookies,Asp.net Mvc 5,我最近从MVC4迁移了一个ASP.NETMVC5项目。我正在使用带有HTTPS和匿名身份验证的FormsAuthentication,并使用以下内容设置cookie: FormsAuthentication.RedirectFromLoginPage(用户名,false) 身份验证工作正常,但我遇到的问题是在我的C#code中获取当前用户名。在我看来我可以做得很好 User.Identity.GetUserName() 但我在控制器里找不到HttpContext.CurrentUser不存在,并

我最近从MVC4迁移了一个ASP.NETMVC5项目。我正在使用带有HTTPS和匿名身份验证的FormsAuthentication,并使用以下内容设置cookie:

FormsAuthentication.RedirectFromLoginPage(用户名,false)

身份验证工作正常,但我遇到的问题是在我的C#code中获取当前用户名。在我看来我可以做得很好

User.Identity.GetUserName()

但我在控制器里找不到
HttpContext.CurrentUser
不存在,并且控制器中的
this.User
始终为空。我也尝试过请求cookie,但失败了

他们登录时,我必须自己设置身份吗?我可能需要用户名单,但我总是可以查询数据库来获得它们


简而言之,在MVC5中,如何在控制器中获取当前用户的用户名?谢谢

表单身份验证还是身份验证?它们是两种不同的东西。我使用的是表单身份验证,而不是身份验证。我认为身份是你可以用来存储用户信息的东西,但我想不是。这个答案似乎起到了作用。您必须导入
WebMatrix.WebData也是。如果用户未经过身份验证,则返回空字符串。您不应该改为调用FormsAuthentication.SetAuthCookie(用户名,false)吗?这将创建cookie,并且通常允许以后使用User.Identity.Name。我在某处阅读了
RedirectFromLoginPage
为您设置cookie,但我在另一个控制器上进行了检查,现在可以访问
User.Identity
。我的问题是,我正在向主控制器发布消息,然后调用另一个控制器的方法,如
(new MyController()).MyMethod(myModel)。是时候改变这个lol了。谢谢你提出来,我从来没想过。
string cookieName = FormsAuthentication.FormsCookieName; //Find cookie name
HttpCookie authCookie = HttpContext.Request.Cookies[cookieName]; //Get the cookie by it's name
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(authCookie.Value); //Decrypt it
string UserName = ticket.Name; //You have the UserName!