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"}}); 
} 
相关问题