Как вручную войти в систему с помощью MembershipProvider? - PullRequest
4 голосов
/ 05 апреля 2010

Я экспериментирую с написанием своего собственного MembershipProvider в asp.net, и я хочу прокрутить свою собственную страницу входа. Мы делаем некоторые довольно специальные вещи во время входа в систему, поэтому мы не можем использовать элемент управления входом по умолчанию, поэтому мне нужен способ для входа пользователя в систему вручную.

Пока что я не нашел ничего о том, как написать свой собственный элемент управления для входа, поэтому я здесь, интересно, как я могу вручную войти в систему через MembershipProvider.

Я пробовал

Membership.ValidateUser("user", "pass");

, и хотя это вызывает ValidateUser() для моего пользовательского MembershipProvider, и оно возвращает true, оно на самом деле не регистрирует меня.

Кстати, я довольно новичок во всех вещах MembershipProvider, поэтому, если я даже не на правильной длине волны, не стесняйтесь, дайте мне знать.

Ответы [ 3 ]

11 голосов
/ 05 апреля 2010
if (Membership.ValidateUser(Username.Text, Password.Text))
{

   FormsAuthentication.SetAuthCookie(Username.Text, false);
   FormsAuthentication.RedirectFromLoginPage(Username.Text, false);
}
else
{
// do something else
}

Вышеупомянутое было скопировано из рабочего кода с пользовательским провайдером членства в ситуации, подобной вашей, когда нам нужно было выполнить кучу дополнительной работы при входе в систему. (Чувствительные операции для защиты невинных.)

8 голосов
/ 05 апреля 2010

MembershipProvider хранит только данные о пользователях, фактический вход в систему и обработка сеанса обрабатываются AuthenticationProvider. Например, если вы используете аутентификацию на основе форм (= cookie), проверьте FormsAuthentication.SetAuthCookie и другие связанные методы в этом классе.

1 голос
/ 05 апреля 2010

Для дальнейшего использования вы можете проверить внутренний код любого компонента, если загляните внутрь сборок с Reflector:

Есть бесплатная версия, которая сделает все необходимое.

Также вам не нужно создавать свой собственный элемент управления Login, потому что Login очень расширяемый. Вы можете редактировать шаблон и обрабатывать различные события, чтобы заставить его делать то, что вы хотите.

...