在MVC3中,未经授权的用户访问页面时需要重定向用户。

4

我有一个MVC 3项目,并使用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
        }

任何帮助都将不胜感激,谢谢您的支持。
1个回答

3
如果 “isAuthorised” 为false,则需要将他们带到一个页面,您可以在该页面上显示“您无权访问页面等。”要执行重定向,必须执行以下操作(在我的示例中,我将它们重定向到 Account/AccessDenied 页面,该页面将返回一个包含消息“您无权访问等等…”的视图):
if (!isAuthorised)
{
    filterContext.Result = new RedirectToRouteResult(
        new RouteValueDictionary {{"action", "AccessDenied"}, 
            {"controller", "Account"}});
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接