2012-02-02 5 views
0

У меня есть веб-приложение (MVC), которое использует членство для auth/auth, где пользователь может иметь несколько ролей и несколько стран с разными ролями.Проверка членства против текущей роли

Скажем, user1 является администратором и редактором в США и только редактором в Мексике. Когда пользователи войдут в систему, ему будет предложено выбрать оба варианта (страна и роль).

AdminController имеет атрибут [Авторизовать (Rol = "Admin")].

В этом случае, если пользователь зарегистрирован в США как редактор, действие в AdminContoller должно быть запрещено.

Каков «лучший» подход для проверки роли, в которой пользователь в настоящее время входит в систему?

+0

Возможно, вы можете переопределить атрибут Authorize. [Авторизовать (Rol = «Admin/Mexico»)] стать администратором и Мексикой. –

ответ

0

Вы можете создать атрибут пользовательского Авторизовать:

public class CustomAuthorizeAttribute : AuthorizeAttribute 
{ 
    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     // Code here checks that user is Admin for currently selected Country 
    } 
} 

, а затем использовать атрибут, как так:

[CustomAuthorizeAttribute (Roles="Admin")] 

This article охватывает тему более подробно.

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