未经授权在MVC3中进行寻呼时重定向用户

时间:2012-05-07 13:34:43

标签: c# asp.net-mvc asp.net-mvc-3 error-handling active-directory

我有一个mvc 3项目,我使用AD来授权用户。 我有一个页面,其中只有具有“Admin”角色的用户才能访问。

我已登录工作并授权用户,因此只有管理员才能访问该网站的管理员部分。 我遇到的问题是,当用户不是管理员时,我似乎无法显示错误信息。

这是我的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 个答案:

答案 0 :(得分:3)

如果isAuthorised为false,则您需要将它们带到可以显示“您无权访问该页面等”的页面。要进行重定向,您必须执行以下操作(在我的示例中,我将它们重定向到Account / AccessDenied,它将返回包含“您没有访问权限等...”的消息的视图:

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