ASP.NET MVC, проверка подлинности с помощью форм и сеанс - PullRequest
1 голос
/ 30 июня 2011

Я хотел бы выполнить приведенную ниже строку, когда пользователь входит в систему, чтобы у меня был доступ к объекту MembershipUser.Однако мне трудно разобраться, когда его установить.

 Session["User"] = Membership.GetUser();

Пока я пытался ...

  • Application_AcquireRequestState
  • Application_BeginRequest
  • FormsAuthentication_OnAuthenticate

Для каждого состояния сеанса не обязательно доступно.

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

Ответы [ 2 ]

3 голосов
/ 30 июня 2011

Если все, что вам нужно, это хранить произвольные данные вместе с именем пользователя, есть проект с открытым исходным кодом, называемый FormsAuthenticationExtensions , который позволяет вам сделать это очень просто:

При выполнении действия «Вход в систему» ​​вы сохраняете свои данные следующим образом:

var ticketData = new NameValueCollection
{
    { "name", user.FullName },
    { "emailAddress", user.EmailAddress }
};
new FormsAuthentication().SetAuthCookie(user.UserId, true, ticketData); 

И вы читаете их обратно так:

var ticketData = ((FormsIdentity) User.Identity).Ticket.GetStructuredUserData();
var name = ticketData["name"];
var emailAddress = ticketData["emailAddress"]; 

Данные хранятся в том же файле cookie, содержащем билет проверки подлинности,поэтому он будет доступен, пока пользователь вошел в систему.

Страница проекта: http://formsauthext.codeplex.com/

Nuget: http://nuget.org/List/Packages/FormsAuthenticationExtensions

1 голос
/ 30 июня 2011

Почему?Вы можете получить доступ к Membership.GetUser из любого места.Это статический метод.Какой смысл размещать значение, к которому вы можете получить доступ из любого места и из любого места?

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