Asp.net MVC自定义角色提供程序重定向到登录页面

Asp.net MVC自定义角色提供程序重定向到登录页面,asp.net,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,您好,我正在使用一个自定义角色提供程序,如果用户拥有允许他们进入的权限,那么所有这些都可以正常工作,如果没有权限,则会重定向到登录页面 但我想知道的是,当他们被重定向到登录页面时,登录页面中是否有一种方法可以设置一条消息,说访问被拒绝或其他什么。 例如,我想要下面的内容,User.FailedCustomRole?我不确定这样的东西是否存在于某个物体中: [AllowAnonymous] public ActionResult Login() { if (

您好,我正在使用一个自定义角色提供程序,如果用户拥有允许他们进入的权限,那么所有这些都可以正常工作,如果没有权限,则会重定向到登录页面

但我想知道的是,当他们被重定向到登录页面时,登录页面中是否有一种方法可以设置一条消息,说访问被拒绝或其他什么。 例如,我想要下面的内容,User.FailedCustomRole?我不确定这样的东西是否存在于某个物体中:

    [AllowAnonymous]
    public ActionResult Login()
    {
        if (User.FailedCustomRole) {
            ViewBag.Message = "No access to this page";
        }
        return View();
    }
谢谢

  • 一种方法是修改web.config,将用户重定向到参数为1的登录页

将登录操作更改为可为null的int,如果已设置,则添加modelstate错误

   public ActionResult LogOn(int? id)
    {
        //int id = Request.QueryString[;
        if (id != null)
        {
            LogOnModel model = new LogOnModel();
            ModelState.AddModelError("", "Please Login to use this page");

            return View(model);
        }
  • 第二种方法是创建一个操作筛选器,用于检查登录并重定向Viewbag.LoginError设置

    public class CheckLoginFilterAttribute : ActionFilterAttribute
    {
        public override void onactionexecuting(ActionExecutedContext filterContext)
        {
                    if (Membership.GetUser() != null)
                    {
                 Viewbag.LoginError = "Please Login to use this page";
                filterContext.Result = new RedirectToRouteResult(
        new System.Web.Routing.RouteValueDictionary {
            {"controller", "Account"}, {"action", "Logon"}
                    }
            {
    
            }
        base.OnActionExecuted(filterContext);
    }   
    
    在登录页面中添加一个div,其中显示
    @(Viewbag.LoginError)
    。如果没有人口,这将变成空白

  • 第三种方法是创建自定义授权筛选器,该筛选器重定向并设置V@(ViewData[“LoginError”]中的错误消息

在登录页面中添加一个div,该div显示
@(ViewData[“LoginError”]
。如果未填充,则该div将显示为空

注意我对最后一种方法最不确定或最不舒服