2014-11-20 2 views
1

최근에 MVC 4에서 마이그레이션 한 ASP.Net MVC 5 프로젝트가 있습니다. FormsAuthentication을 HTTPS 및 익명 인증과 함께 사용하고 다음을 사용하여 쿠키를 설정하고 있습니다.ASP.Net MVC 5 Forms 인증 코드 뒤에 사용자 이름 얻기

FormsAuthentication.RedirectFromLoginPage(Username, false)

인증은 작동하지만 난 데 문제는 내 C# 코드에서 현재 사용자의 이름을 받고있다. 내보기에 좋은 그것을 얻을 수

User.Identity.GetUserName()

하지만 컨트롤러에 그것을 얻을 수 없습니다. HttpContext.CurrentUser이없고 컨트롤러의 this.User은 항상 null입니다. 또한 쿠키 요청을 시도했지만 실패합니다.

로그인 할 때 신원을 직접 설정해야합니까? 사용자 롤이 필요할 수도 있지만 데이터베이스를 가져 오기 위해 항상 쿼리 할 수 ​​있습니다.

요약하면 MVC 5의 컨트롤러에서 현재 사용자의 사용자 이름을 가져올 수 있습니까? 감사합니다

+0

폼 인증 또는 신원? 그들은 서로 다른 두 가지입니다. – Shoe

+0

ID가 아닌 폼 인증을 사용하고 있습니다. 나는 정체성이 당신이 사용자 정보를 저장하는 데 사용할 수있는 것이라고 생각했지만, 그렇지는 않습니다. – Jooooosh

+0

이 답변은 트릭을 수행하는 것처럼 보였습니다. 'WebMatrix.WebData; '도 가져와야 할 것이다. 사용자가 인증되지 않은 경우 빈 문자열을 반환합니다. http://stackoverflow.com/a/17254386/4051272 – Jooooosh

답변

3
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!