2009-10-27 6 views
1

Я начинаю разрабатывать инфраструктуру веб-приложения, разработанную с помощью ASP.NET MVC preview 2, как учебный опыт. У меня есть моя собственная модель домена и схема базы данных, которую я хочу использовать для аутентификации.Членство и аутентификация Asp.net

Я хочу выполнить вариант проверки подлинности на основе роли. Тем не менее, я не могу представить, как это сделать.

У меня есть пользователь, который имеет доступ к «блогу». Как я могу выполнять авторизацию, когда пользователь находится в ожидаемой роли, но где пользователь принадлежит к вышеупомянутому «блогу»

Может ли понадобиться пользовательский поставщик роли или может ли я выполнить логику в атрибуте авторизации для действия контроллера; запросы к BlogId аутентифицированного пользователя и выполнение там авторизационной логики. Я не знаю никаких встроенных способов сделать это, но если есть, пожалуйста, исправьте меня.

Если возможно, пример пользовательского поставщика роли или атрибута авторизации, который обеспечил бы эту функциональность, был бы замечательным.

Спасибо

ответ

1

Это звучит так, как вы хотели, это способность иметь и определенную роль и проверку собственности. Например, пользователь может иметь роль «автора», но также должен иметь отношение собственности к конкретному блогу, чтобы фактически иметь возможность создавать или обновлять записи в блогах. Использование стандартного поставщика ролей наряду с настраиваемым атрибутом авторизации, который знает, как проверить право собственности - по существу, определенную связь между внешними ключами между объектом для действия и текущей пользовательской записью в БД - представляется разумным способом подхода это.

Вы можете найти пример кода на my answer на этот similar question.

+0

Благодарим за быстрый ответ. будет использовать конфликт атрибута authorize с кэшированием вывода; Я помню, что читал об этом где-то. –

+0

Посмотрите на источник AuthorizeAttribute по адресу http://www.codeplex.com/aspnet и посмотрите, как они справляются с проблемами кэширования. В моем примере кода вы можете увидеть, что я вызываю SetCachePolicy(), который в основном реализует код, который обращается к нему аналогично самому AuthorizeAttribute. – tvanfosson

+0

Кажется, это именно то, что мне нужно. Спасибо. –

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