2014-02-18 5 views
0

액세스 쿠키 :C#을 정적 도우미 클래스 내 웹 사이트에 양식 인증에 대한 사용자 정의 쿠키를 구현

나는 몇 가지 추가 정보 userData에 저장하고 있기 때문에

http://msdn.microsoft.com/en-us/library/system.web.security.formsauthenticationticket.aspx

:

Account account = accountRepository.GetAccount(model.Email); 
string userData = string.Format("{0}|{1}", account.UserId, account.AccountTypeId); 
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, 
                   model.Email, 
                   DateTime.Now, 
                   DateTime.Now.AddMinutes(48), 
                   model.RememberMe, 
                   userData, 
                   FormsAuthentication.FormsCookiePath); 

I을 정적 쿠키를 생성하여 userData을 내 쿠키에서 추출하려고합니다.

그러나 User.Identity.Name 내 컨트롤러 외부에 액세스 할 수 없습니다.

내 컨트롤러에서 어떻게 액세스 할 수 있습니까? 정적 클래스가되는 것이 잘못입니까?

감사

+0

사용하지 않는를'사용자 .Identity.Name'을 코드에 넣었으므로 문제가 무엇인지 명확하지 않습니다. 어떤 경우에도 필요한 데이터를 전달할 수 있습니까? – bmm6o

+0

이미 해결책이 있으므로 게시하겠습니다. 답장을 보내 주셔서 감사합니다. –

답변

0

내 접근 방식은 당초 계획 정적 도우미 클래스를 생성했다 : 내 컨트롤러 내부

public static class CookieHelper 
{ 
    public static Guid GetCurrentUserId(IIdentity identity) 
    { 
     Guid result; 

     var userData = ((FormsIdentity)identity).Ticket.UserData; 

     result = new Guid(userData.Split('|')[0]); 

     return result; 

    } 

    public static int GetCurrentAccountTypeId(IIdentity identity) 
    { 
     int result; 

     var userData = ((FormsIdentity)identity).Ticket.UserData; 

     result = Convert.ToInt16((userData.Split('|')[1])); 

     return result; 

    } 
} 

나는이 방법을 호출

Guid currentUserId = CookieHelper.GetCurrentUserId(User.Identity);