4

私はmvc3プロジェクトを持っており、ADを使用してユーザーを承認しています。「管理者」の役割を持つユーザーのみがアクセスできるページがあります。

サインインを機能させ、ユーザーを承認して、管理者のみがサイトの管理者部分にアクセスできるようにしました。私が抱えている問題は、ユーザーが管理者でない場合、適切なエラーメッセージを表示できないようです。

これが私の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
        }

助けていただければ幸いです、よろしくお願いします

4

1 に答える 1

3

がfalseの場合はisAuthorised、「ページにアクセスできないなど」を表示できるページに移動する必要があります。リダイレクトを行うには、次のことを行う必要があります(私の例では、Account / AccessDeniedにリダイレクトします。これにより、「アクセス権がありません...」というメッセージを含むビューが返されます。

if (!isAuthorised)
{
    filterContext.Result = new RedirectToRouteResult(
        new RouteValueDictionary {{"action", "AccessDenied"}, 
            {"controller", "Account"}});
}
于 2012-05-07T13:43:18.250 に答える