2012-02-06 3 views
0

Я пытаюсь выяснить, когда мой собственный пользовательский поставщик членства (не наследующий от членства ASP.NET), если мне нужно работать с IPrincipal и IIdentity. Я имею в виду, что это не только для непубличных сайтов, где вы работаете с учетной записью на базе Windows?IPrinciple и IIdentity в приложении E-commcerce - ASP.NET MVC

Также я хочу создать свой собственный файл cookie для хранения данных auth, а не файлов cookie .ASPXAUTH.

Мы также создаем собственный провайдер ролей, поэтому мы не будем использовать функциональность Context.User.IsInRole, которую я бы предположил с помощью IIdentity.

+0

Могу ли я спросить, почему вы хотите это сделать? –

ответ

2

Я имею в виду, что это не только для непубличных сайтов, где вы работаете с учетной записью на базе Windows?

Совсем нет. Эти интерфейсы используются с поставщиком членства независимо от того, какую схему аутентификации вы используете. Например, свойство пользователя HttpContext - это IPrincipal, которое содержит имущество Identity типа IIdentity. Поэтому независимо от того, какую аутентификацию вы используете, вы должны работать с этими интерфейсами. Конечно, вы могли бы написать свои собственные пользовательские реализации.

+0

Да, я просто понял, что ... Я всегда использую HttpContext, и теперь я вижу. Duh. Мы не используем поставщика членства, который мы каталируем самостоятельно, и просто следили за тем, чтобы наш код не имел ничего общего с поставщиком членства ASP.NET. Другими словами, мы настраиваем собственный способ делать вещи и наши собственные таблицы DB для авторизации пользователя. Нам не нравится, как членство ASP.NET предоставляет это из коробки. – PositiveGuy

+0

, когда вы говорите, пишите свои собственные пользовательские реализации, это то, что мы хотим сделать. Мы будем захватывать текущую информацию о пользователе из HttpContext. Я также рассматривал это сообщение в блоге: http://www.bradygaster.com/custom-authentication-with-mvc-3.0 – PositiveGuy

+0

@CoffeeAddict Я бы рекомендовал абстрагировать пользователя и не обращаться к нему напрямую из HttpContext. Это упростит модульное тестирование ваших контроллеров. – Dismissile

Смежные вопросы