ASP.Net MVC Аутентификация - PullRequest
       34

ASP.Net MVC Аутентификация

3 голосов
/ 05 августа 2010

Я знаю, что об этом спрашивали миллион раз, но все, что я мог найти, это либо очень простые, либо слишком сложные сценарии, которые мне не очень полезны (например, огромный пример реализации MembershipProvider на MSDN).

Вот моя проблема: у меня есть база данных с таблицей Users. Пользователь имеет имя пользователя, пароль и некоторую другую важную информацию. То, что я хочу, - это возможность иметь страницу, требующую аутентификации, поэтому, если пользователь уже подписан на приложение, он может аутентифицироваться с помощью своего uname / pwd, иначе он может зарегистрироваться, заполнив всю необходимую информацию. Никаких ролей, никаких особых привилегий, ничего, просто простая аутентификация.

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

Спасибо.

РЕДАКТИРОВАТЬ:
Просто для пояснения, мне не нужен пользовательский MembershipProvider, я использую базу данных SQL Server, поэтому поставщик по умолчанию должен работать просто отлично. Проблема в том, как я могу просто определить свой собственный набор необходимой информации для пользователя.

ОТВЕТ:
В конечном итоге мне пришлось получить свой собственный класс MembershipProvider и переопределить методы, которые меня интересовали. Это было намного проще, чем я думал, и работал хорошо.

Ответы [ 2 ]

2 голосов
/ 05 августа 2010

Используя Visual Studio (2008, 2010), создайте приложение ASP.NET MVC2 (не беспокойтесь, я не предлагаю его сохранять, просто используйте его для изучения) В созданном коде взгляните на интерфейс IMembershipService:

public interface IMembershipService {
   int MinPasswordLength { get; }
   bool ValidateUser(string userName, string password);
   MembershipCreateStatus CreateUser(string userName, string password, string email);
   bool ChangePassword(string userName, string oldPassword, string newPassword);
}

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

Другим примером может быть класс, использующий веб-сервис на основе WCF. Это подход, который я использовал в одном из моих недавних проектов.

Все остальное уже подключено и готово к работе.

0 голосов
/ 06 августа 2010

Это действительно просто, просто позвоните

FormsAuthentication.SetAuthCookie(userName, rememberMe);

и поместите атрибут [Authorize] на контроллеры или действия, для которых вы хотите ограничить доступ

Кроме того, если вам понадобятся роли в будущем, вы можете посмотреть здесь

http://code.google.com/p/asms-md/source/browse/trunk/WebUI/FormAuths.cs Я храню роли в билете здесь

...