4

我有一個mvc 3項目,我使用AD來授權用戶。 我有一個頁面,只有角色爲「Admin」的用戶才能訪問。重定向用戶在MVC3中未被授權頁面時

我已經簽署了工作和授權用戶,所以只有管理員可以訪問該網站的管理員部分。 我的問題是當用戶不是管理員,我似乎無法顯示一個好的錯誤信息。

這裏是我的actionFilterattribute

public class AdminOnlyAttribute : ActionFilterAttribute 
{ 
    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     base.OnActionExecuting(filterContext); 
     bool isAuthorised = false; 

     IPrincipal user = filterContext.HttpContext.User; 
     if (user.Identity.IsAuthenticated) 
     { 
      if (user.IsInRole("Admin")) 
      { 
       isAuthorised = true; 
      } 
     } 

     if (!isAuthorised) 
     { 
      //error message here 
     } 
    } 

,這是我對管理

[AdminOnly] 
     public ActionResult Index() 
     { 
     //admin stuff 
     } 

控制器任何幫助表示讚賞,謝謝提前

回答

3

如果isAuthorised是假的,你會需要帶他們到一個頁面,你可以顯示「你無法訪問該頁面等」。要做重定向,您必須執行以下操作(在我的示例中,我將它們重定向到Account/AccessDenied,它將返回包含消息的視圖,說明「您沒有訪問權等...」:

if (!isAuthorised) 
{ 
    filterContext.Result = new RedirectToRouteResult(
     new RouteValueDictionary {{"action", "AccessDenied"}, 
      {"controller", "Account"}}); 
} 
相關問題