2013-05-09 2 views
0

Сначала я использую EF-код и ASP.NET MVC 4. Мои пользователи будут входить на сайт исключительно с поставщиками OAuth, а не с родными учетными записями. У меня это работает без проблем, с таблицей Users в качестве части моей стандартной модели и веб-страниц_OAuthMembership, содержащих данные OAuth. Я добавил поле бит «Включено» в таблице «Мои пользователи», так что, пока сайт все еще находится в «альфа», пользователи не будут иметь доступ к сайту, если я его не одобрю. Таким образом, пользователи могут создавать учетные записи OAuth, но я хочу изолировать определенные контроллеры, используя аннотацию, чтобы предотвратить их использование. Например, у меня есть контроллер «виджетов». прямо сейчас его установите на [Авторизовать], чтобы пользователи вошли в систему. Но я хочу, чтобы мои собственные аннотации, [одобрены] или [Включено], так что даже вошедшие в систему пользователи не могут продолжить, если я не перевернул этот бит в ' on 'в таблице users. Хотя я мог бы написать свой собственный вспомогательный метод и ввести его вручную, я бы предпочел использовать аннотации, так как его проще развертывать и удалять, когда сайт жив.MVC [Авторизовать] Расширение только для проверки флажка «enabled»

В будущем, если на сайте когда-либо были начислены деньги, я бы хотел поменять [Включено], чтобы проверить, не является ли пользователь актуальным, разумные платежи. Поэтому я чувствую, что аннотация - это правильный путь, просто не уверенный 100%, как это сделать, и что у меня еще нет способности к членству, что я не знаю.

Спасибо!

ответ

1

Почему вы просто не добавляете чек для бит Enabled при проверке их имени? Затем вы можете запретить пользователям, не включенным в систему, полностью войти в систему (не уверен, почему вы хотите, чтобы они вошли в систему, но не могли получить доступ к каким-либо страницам .. вроде глупо).

В качестве альтернативы вы можете просто использовать для этого роли. Добавьте пользователей в роль «Включено», а затем настройте свои страницы только для доступа к этой роли. Кажется, намного легче, чем кататься по какой-то причине.

+0

Не то, чтобы они не могли получить доступ к «каким-либо» страницам, но они не имеют доступа к некоторым. Если вы думаете о лояльном клиенте, чья кредитная карта была отменена, возможно, они пропустили платеж. вы хотите, чтобы у них была возможность входа в систему и управления ими, но не доступа к частям сайта, за который они должны платить. Это не необоснованно. Я мог бы добавить роль; но прежде, чем я спустился по этому маршруту, хотел убедиться. – Richthofen

+0

@ Richthofen - Использование ролей было бы простым, не требующим какого-либо специального кода, кроме конфигурации, в буквальном смысле нет причин, по которым вы хотели бы сделать что-либо еще. Если их членство истекает, вы просто удаляете роль «ValidMember» или что-то еще, и они не могут получить доступ к областям, защищенным ролью ValidMember. –

+0

Роли классные, я определенно рассматриваю это. Еще один вопрос: соответствуют ли роли вне структуры ASP.NET MVC? Например, я планирую также выпуск API. API будет аутентифицироваться и против таблицы пользователей. Можно ли расширить роли, например, метод веб-службы? – Richthofen

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