2014-02-18 2 views
0

я реализовал пользовательский куки для форм авторизации на моем сайте:C# статический вспомогательный класс - печенье Доступ

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

Так как я храню некоторую дополнительную информацию USERDATA:

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 из моего файла cookie.

Однако я не могу получить User.Identity.Name вне моего контроллера.

Как я могу получить доступ к этому контроллеру? И неправильно ли быть статическим классом?

Благодаря

+0

Вы не можете использовать 'Пользователь .Identity.Name' в вашем коде, поэтому неясно, в чем проблема. В любом случае, можете ли вы передать любые данные, которые вам нужны? – bmm6o

+0

У меня уже есть решение, поэтому я опубликую его. Спасибо за ответ. –

ответ

0

Мой подход создания класса Static Helper, как первоначально планировалось:

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); 
Смежные вопросы