Позволяет пользователям с ролями динамически обращаться к методам контроллера. У меня типичный сценарий, когда я хочу, чтобы пользователи могли динамически обращаться к страницам, поскольку prvilege, установленный для каждой роли, может быть изменен пользовательским интерфейсом. У меня есть три ActionResultДинамический доступ к результатам action
Контроллер:
public class HomeController : Controller
{
[CustomAuthorize(Roles="Admin")]
Public Actionresult UI01(){
return View();
}
[CustomAuthorize(Roles="Admin")]
Public Actionresult UI02(){
return View();
}
[CustomAuthorize(Roles="Admin")]
Public Actionresult UI03(){
return View();
}
}
Вид: Я скрыть пункты меню, проверяя роль администратора.
@*menu items*@
@if((Roles.IsUserInRole("Admin")){
<li>@Html.ActionLink("Rating", "UI01", "Home")</li>
}
@if((Roles.IsUserInRole("Admin")){
<li>@Html.ActionLink("Map", "UI02", "Home")</li>
}
@if((Roles.IsUserInRole("Admin")){
<li>@Html.ActionLink("Sales", "UI03", "Home")</li>
}
авторизированным атрибут classs:
public class CustomAuthorize : AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
{
base.HandleUnauthorizedRequest(filterContext);
}
else
{
filterContext.Result = new RedirectToRouteResult(new
RouteValueDictionary(new { controller = "Account", action = "Error" }));
}
}
}
У меня есть отдельный модуль для присвоения привилегий пользователям доступ к UI01, UI02, UI03 следующим образом.
Page name Admin Employee Customer
------------------------------------------------
Rating 1 0 0
Map 1 0 0
Sales 1 0 0
*1-allow
*0-Deny access
Currenly Все три пользовательских интерфейса допускают только роль администратора. Но мне нужно динамически устанавливать доступ к методам Controller с соответствующими привилегиями, установленными в вышеприведенном пользовательском интерфейсе.
Edit: Я создал атрибут Customauthorize для каждой страницы/ActionResult и получили результат успешно используя метод, описанный в этой ссылке asp.net mvc decorate [Authorize()] with multiple enums
Но моя проблема сейчас, чтобы скрыть меню в макете (просмотреть) страница
Thankyou за ваше время, я dont't получить it.Can пожалуйста проинструктировать его, как я могу получить значение ролей («рейтинг») динамически? – gs11111
Вы можете создать страницу администратора и использовать: «Roles.AddUserToRole (« MyUserName »,« Rating »);' –
У меня есть предопределенные роли, называемые как «Админ», «Сотрудник» и «Клиент». В настоящее время пользователи, имеющие права администратора, могут доступ ко всем пользовательским интерфейсам с момента установки «1». доступ администратора может быть ограничен, если я смену SAiles на «0». – gs11111