Как защитить область MVC4 для администраторов из пользовательской таблицы SQL "AdminUsers"
Я видел несколько примеров защиты приложения MVC с помощью токенов, roleprovider и membershipprovider, но ни один из них не совсем подходит для моего сценария. Вот моя установка..
- VS2012 связан с SQL 2008 R2 с помощью EntityFramework 4.3 для управления данными.
- Проект настроен в IIS для базовой аутентификации, поэтому все сотрудники, преподаватели и студенты с empID могут проходить аутентификацию внутри компании или за ее пределами. Некоторые из этих людей являются администраторами, поэтому они управляются в административной области.
- Я создал область "Администратор" в своем проекте, которая в настоящее время не имеет безопасности, поэтому любой может ввести домен / администратор и быть перенаправлен в эту область. Эта область содержит и администратор (CRUD), встречи (CRUD), настройки (U), инструменты и функциональные возможности отчетов. Секция adminUser и назначений имеет свою собственную таблицу, и CRUD работает как положено.
Вот что я спрашиваю... Как я могу проверить текущую пользовательскую базовую аутентификацию в отношении "Admins" из моей таблицы sql AdminUsers, а затем разрешить только этим людям доступ к моей административной области?
Спасибо за ваше время, Крис
1 ответ
Решение
Если вы не собираетесь полагаться на членство или роли, вы всегда можете написать собственную реализацию AuthorizeAttribute
который проверяет пользователя по базе данных.
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class AdminOnlyAttribute : AuthorizeAttribute
{
public AdminOnlyAttribute()
{
}
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (!User not in Admin table)
{
throw new UnauthorizedAccessException();
}
base.OnAuthorization(filterContext);
}
}
Или что-то в этом роде. Тогда конечно:
[AdminOnly]
public class AdminController : Controller
{
// ...
}