Я создаю веб-приложение с использованием ASP.NET MVC с двумя очень разными типами пользователей. Я приведу пример и скажу, что один тип - производители контента (издатели), а другой - потребители контента (подписчики).Пользовательская авторизация ASP.NET MVC
Я не планирую использовать встроенные средства авторизации ASP.NET, поскольку разделение моих типов пользователей является дихотомией, вы либо издатель, либо подписчик, а не оба. Таким образом, встроенная авторизация более сложна, чем мне нужно. Плюс я планирую использовать MySQL.
Я думал о хранении их в одной таблице с полем перечисления (технически поле int). Затем создадим атрибут CustomAuthorizationAttribute, в котором я бы перешел в userType, необходимый для этой страницы.
Например, для страницы PublishContent потребуется userType == UserType.Publisher, поэтому доступ к ней могут получить только издатели. Таким образом, создание этого атрибута дает мне доступ к HttpContextBase, который содержит стандартное поле пользователя (типа IPrincipal). Как получить поле UserType на этом IPrincipal? Итак, тогда мой атрибут будет выглядеть так:
Или кто-нибудь думает, что мой весь подход испорчен?
Это сделало бы для непроверенного беспорядка в MVC. Определенно не правильный подход. –
Неустойчивый беспорядок? Едва. Это очень недальновидно. И служба 'AccountService', и' FormsAuth' являются интерфейсами, которые вводятся в 'AccountController', что делает это полностью проверяемым. Все остальное зависит от FormsAuthentication (как еще вы делаете formauth?), Который, как вам известно, как правило, трудно проверить - как указывает проект ASP.NET MVC по умолчанию. Конечно, вы можете извлечь вызовы FormsAuthentication в службу, но что действительно нужно достичь, учитывая, где это вызовы? – Charlino