asp.net сеанс MVC и аутентификация членства - PullRequest
0 голосов
/ 22 сентября 2010

Новичок в MVC, много работал с asp.net, но никогда раньше не использовал встроенное членство, аутентификацию, авторизацию.

У меня есть 2 вопроса:

  1. В дни asp.net я сохранял данные о вошедшем в систему пользователе (имя пользователя, имя и фамилия, адрес электронной почты) в сеансе (используя собственный класс) и просто проверял, что сеанс ["UserDetails"] ! = null на каждой защищенной странице, могу ли я сделать это в MVC? (почему я не делаю это со встроенным материалом? - переместите вопрос № 2)

  2. В моей БД у меня есть таблица авторов (с user & pass), которая связана с 20 другими таблицами, и у меня есть таблица пользователей (с user & pass), которая соединяется с 1 или 2 таблицами. Скажем, я хочу использовать встроенный материал, как я могу использовать, чтобы проверить логин автора и логин пользователя с тем же поставщиком членства? и как я узнаю, кто в данный момент вошел в систему пользователя или автора при вызове User.Identity.IsAuthenticated?

Спасибо всем!

Ответы [ 2 ]

0 голосов
/ 22 сентября 2010
  1. вы не должны были делать это на обычном asp.net.То, что вы должны были использовать аутентификацию форм для отправки подписанного билета, который в 2.0+ мог быть с поставщиком членства.Предыдущий вариант довольно гибкий, поэтому до прочтения №2 уже не было причин не использовать его;).Но да, вы все равно можете это сделать, и нет другого предлагаемого способа обработки в asp.net MVC.
  2. Вы можете либо поместить дополнительные данные в заявку, либо использовать соглашение, добавляющее что-то кимя пользователя в заявке, а затем при получении файла cookie вы можете заменить IPrincipal контекста на собственный принципал.
0 голосов
/ 22 сентября 2010

Вопрос 1:

В ваших контроллерах вы будете использовать HttpContext.User для получения текущего IPrincipal для пользователя, выполняющего запрос. Чтобы защитить действие (или весь контроллер), просто украсьте его атрибутом [Authorize]. Читайте об атрибуте authorize здесь http://msdn.microsoft.com/en-us/library/system.web.mvc.authorizeattribute.aspx

Вопрос 2:

Здесь у вас есть два варианта: расширить провайдер профиля для управления этими дополнительными данными или потерять немного ссылочной целостности и просто использовать базу данных сервисов приложения для авторизации и сохранения и иметь поле UserId в каждой сущности, связанной с пользователем и сборкой коллекция вашего пользователя и связанных сущностей в слое доступа к вашим данным. Я всегда использую 2-й.

...