在未授权在 MVC3 中页面时重定向用户

本文关键字:重定向 用户 授权 MVC3 | 更新日期: 2023-09-27 18:33:28

我有一个 mvc 3 项目,我使用 AD 来授权用户。我有一个页面,只有具有"管理员"角色的用户才能访问。

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

这是我的动作过滤器属性

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
        }

任何帮助不胜感激,提前感谢

在未授权在 MVC3 中页面时重定向用户

如果

isAuthorised为假,您需要将它们带到一个页面,您可以在其中显示"您无权访问该页面等"。要进行重定向,您必须执行以下操作(在我的示例中,我将它们重定向到帐户/访问拒绝,这将返回一个包含消息的视图,指出"您没有访问权限等...":

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