Как сохранить идентификатор пользователя в файле cookie для входа? - PullRequest
0 голосов
/ 26 апреля 2011

Используя ручной вход в веб-приложение,

FormsAuthentication.SetAuthCookie(_username, true);

Как я могу сохранить userID (целочисленное значение) с его cookie?

Ответы [ 3 ]

3 голосов
/ 27 апреля 2011

FormsAuthenticationTicket имеет перегрузку, которая принимает string userData.Здесь вы можете добавить дополнительные данные в зашифрованный cookie-файл, который необходимо сохранить в дополнение к стандартному HttpContext.User.Identity (обычно это адрес электронной почты, например, с помощью которого SetAuthCookie).

Вы можете сделать это:

    var user = new User { UserId = 1, Nickname = "Foo" };

    var encodedTicket = FormsAuthentication.Encrypt(
       new FormsAuthenticationTicket(
          1, 
          user.Nickname, 
          DateTime.Now,  
          DateTime.UtcNow.Add(FormsAuthentication.Timeout),
          true,                                                                            
          user.ToString()));

var httpCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encodedTicket);
httpResponseBase.Cookies.Add(httpCookie);

Вы можете переопределить метод ToString() для вашего объекта User, чтобы сохранить эту информацию (например, в виде строки с разделителями).

Тогда, когдаВы расшифровываете cookie, разбиваете строку и извлекаете необходимую информацию по каждому запросу.

1 голос
/ 26 апреля 2011

Использовать FormsAuthentication.GetAuthCookie

HttpCookie httpCookie = FormsAuthentication.GetAuthCookie(_username, true); 
httpCookie["ID"] = userID.ToString();
0 голосов
/ 26 апреля 2011

Имя пользователя, используемое в схеме аутентификации, не обязательно означает логин или фактическое имя пользователя для пользователя. По сути, это означает любую строку, которая может идентифицировать вашего пользователя - поэтому, как правило, имя входа в систему будет использоваться в случае аутентификации форм (поскольку имя входа будет уникальным), но вы можете вместо этого использовать идентификатор пользователя (или комбинацию имени входа и идентификатора пользователя, например, «2 | jack ") - просто запомните, какое бы значение вы не указали в качестве" имени пользователя ", оно будет доступно как идентификатор пользователя (HttpContext.User.Identity.Name).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...