Пользователи ASP.NET / Членство / Членство пользователя / Безопасность / Принципал / Профиль ... HELP - PullRequest
5 голосов
/ 16 сентября 2009

Я знаю, что это может звучать как что-то, что объясняется повсюду ... но я смотрел много видео asp.net/learn, читая статьи - и все же чего-то не хватает, что объясняет, как все это "членство" связывает вместе.

С одной стороны, есть встроенное управление пользователями .net, которое позволяет вам создавать роли, пользователей и т. Д. Затем, с другой стороны, получить этого пользователя, сохранить его (в сеансе и т. Д.) Кажется странной задачей, из того, что я прочитал, включая создание ваших собственных «основных» объектов и т. д.

Если есть кто-то, у кого есть понимание и время, могли бы они дать нам (мне) краткое объяснение того, что есть что со всем этим. Может быть, как это связано друг с другом ... Как использовать строковое имя пользователя / пароль, чтобы увидеть, существует ли учетная запись, войти в нее, проверить, играют ли они правильную роль для действия ... или даже получить все роли, которые пользователь является частью?

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

Большое спасибо заранее. peteski

1 Ответ

6 голосов
/ 16 сентября 2009

Вам вообще не нужно создавать свой собственный главный объект. Все, что вы можете сделать, - это использовать один из готовых MembershipProvider (например, SQLMembershipProvider) для управления вашим пользователем и использовать один из RoleProvider (например: SQLRoleProvider) для установки авторизации для пользователей, если требуется.

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

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

Membership.ValidateUser(username,password).

Для входа в систему я предлагаю вам использовать предоставленный элемент управления ASP.NET Login, но вы можете кодировать свой собственный логин, немного потрудившись. Если вы используете проверку подлинности формы, это что-то вроде:

if (Membership.ValidateUser(UsernameTextbox.Text, PasswordTextbox.Text))
   FormsAuthentication.RedirectFromLoginPage(UsernameTextbox.Text, NotPublicCheckBox.Checked);
else
   Msg.Text = "Login failed. Please check your user name and password and try again.";

P.S .: Пример взят из MSDN

Наконец, чтобы проверить, может ли пользователь выполнить действие, вы используете

RoleProvider.IsUserInRole(username,rolename)

Вы также можете контролировать доступ к ресурсу (странице, файлу, папке и т. Д.) Путем авторизации конфигурации в вашем web.config ex:

Надеюсь, что эта помощь и не стесняйтесь просить больше информации, если не ясно

Редактировать

Чтобы ответить на ваш комментарий, вот как это работает:

Page.User использует куки-файл аутентификации для идентификации текущего пользователя. Этот файл cookie автоматически устанавливается в FormsAuthentication.RedirectFromLoginPage, но, если вы просто хотите установить текущего пользователя без перенаправления, вы можете вручную вызвать FormsAuthentication.SetAuthCookie (userName, persistentCookie), где persistentCookie - логическое значение, указывающее, хотите ли вы, чтобы этот файл cookie был постоянным. или нет в браузере.

Надеюсь, что уточнить исходный ответ

...