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がfalseで、あなたがよもしそれらを「ページなどへのアクセス権がありません」と表示できるページに移動する必要があります。リダイレクトを行うには、次の手順を実行する必要があります(私の例では、Account/AccessDeniedにリダイレクトして、「アクセス権がありません」というメッセージを含むビューを返します)。

if (!isAuthorised) 
{ 
    filterContext.Result = new RedirectToRouteResult(
     new RouteValueDictionary {{"action", "AccessDenied"}, 
      {"controller", "Account"}}); 
} 
関連する問題