2013-11-19 4 views
0

У меня есть одно приложение страницы и начальной страницы я связан с ActionResult «_admin()»Включите JavaScript на основе ActiveDirectory членства

@Html.Action("_ADMIN") 

В зависимости от членства в группе пользователя, это ActionResult возвращает либо EmptyResult или его вид:

public ActionResult _ADMIN() 
    { 
     if (User.IsInRole("admin")) 
     { 
      return View(); 
     } 
     else 
     { 
      return new EmptyResult(); 
     } 
    } 

его вид состоит из одной этой линии:

@Scripts.Render("~/bundles/admin") 

Это работает, но кажется субоптимальным. Я мог бы скопировать стартовую страницу и создать отдельные для не админов и админов, но это было бы еще более субоптимально. Я использую MVC 4.

Каков наилучший способ включения пакета JavaScript только в том случае, если текущий пользователь находится в определенной группе Active Directory?

+0

Если переместить «если» в целях их вы, вероятно, не нужно «еще» –

+0

Дал мне ошибку, когда я пытался что .. позвольте мне еще раз проверить .. – peter

ответ

0

Я хотел бы только показать ссылку на пользователь администратора:

if (User.IsInRole("admin")) 
{ 
    @Html.Action("_ADMIN") 
} 

Затем, в случае не-администратор пытался получить доступ к методу действия, я бы блокировать запрос на методе действия:

[Authorize(Roles = "admin")] 
public ActionResult _ADMIN() 
{ 
    return View(); 
} 
+0

Похоже, я неправильно Html. Действие() как Html.ActionLink(). Не уверен, что мой ответ будет по-прежнему применяться –

2

Вы можете добавить скрипты в зависимости от ролей. Как что:

if (User.IsInRole("admin")) 
{ 
    @Scripts.Render("~/bundles/admin") 
} 

И на вашем методе действий добавить атрибут, то пользователь будет автоматически перенаправлен на страницу входа в систему, если она не имеет права. Вы можете добавить этот атрибут и для всего класса.

[Authorize(Roles = "admin")] 
Смежные вопросы