2010-09-22 1 views
0

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

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

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

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

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

ответ

0

Вопрос 1:

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

Вопрос 2:

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

+0

Привет, спасибо, но можете ли вы подробнее рассказать о вариантах 2 «немного потерять ссылочную целостность и просто использовать службы приложений db». – TomerMiz

+0

Конечно, в идеале у вас будет один db, чтобы вы могли сделать все необходимые отношения с таблицей пользователей. Переход со вторым подходом означает, что у вас будет 2 базы данных, одна для пользователей и одна для данных приложения, поэтому в схеме между пользователями и связанными с ними объектами не будет никаких связей. – JoseMarmolejos

+0

Привет, поэтому, со вторым подходом, мне нужно будет удерживать тип пользователя (customr, author ..) в БД пользователей? но почему 2 базы данных? я мог бы просто иметь таблицы пользователей и внешние ключи от пользователей к таблицам клиентов и авторов. вам не кажется? – TomerMiz

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

Привет, Спасибо, вы хотите сохранить имя пользователя в cookie как «autor_RealUserName», чтобы идентифицировать его как автора? – TomerMiz

+0

Да, но я имею в виду конкретно в cookie проверки подлинности форм, а не пользовательский cookie, который вы создаете. Дополнительная информация об аутентификации форм по этой ссылке: http://msdn.microsoft.com/en-us/library/ff647070.aspx. – eglasius