为了账号安全,请及时绑定邮箱和手机立即绑定

从动作过滤器属性重定向

从动作过滤器属性重定向

C#
函数式编程 2019-11-11 15:31:23
在中执行重定向的最佳方法是什么ActionFilterAttribute?我有一个ActionFilterAttribute电话,IsAuthenticatedAttributeFilter并检查了会话变量的值。如果变量为false,则我希望应用程序重定向到登录页面。我更愿意使用路由名称进行重定向,SystemLogin但是此时任何重定向方法都可以。
查看完整描述

3 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

作为重定向的替代方法,如果它正在调用您自己的代码,则可以使用以下命令:


actionContext.Result = new RedirectToRouteResult(

    new RouteValueDictionary(new { controller = "Home", action = "Error" })

);


actionContext.Result.ExecuteResult(actionContext.Controller.ControllerContext);

它不是纯粹的重定向,但会产生类似的结果而没有不必要的开销。


查看完整回答
反对 回复 2019-11-11
?
RISEBY

TA贡献1856条经验 获得超5个赞

我正在使用MVC4,我使用以下方法在违反授权时重定向自定义html屏幕。


扩展AuthorizeAttribute说CutomAuthorizer 覆盖OnAuthorization和HandleUnauthorizedRequest


在CustomAuthorizer中注册RegisterGlobalFilters。


public static void RegisterGlobalFilters(GlobalFilterCollection filters)

{


    filters.Add(new CustomAuthorizer());

}

识别unAuthorized访问呼叫HandleUnauthorizedRequest并重定向到相关的控制器操作,如下所示。


public class CustomAuthorizer : AuthorizeAttribute

{


    public override void OnAuthorization(AuthorizationContext filterContext)

    {

        bool isAuthorized = IsAuthorized(filterContext); // check authorization

        base.OnAuthorization(filterContext);

        if (!isAuthorized && !filterContext.ActionDescriptor.ActionName.Equals("Unauthorized", StringComparison.InvariantCultureIgnoreCase)

            && !filterContext.ActionDescriptor.ControllerDescriptor.ControllerName.Equals("LogOn", StringComparison.InvariantCultureIgnoreCase))

        {


            HandleUnauthorizedRequest(filterContext);


        }

    }


    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)

    {

        filterContext.Result =

       new RedirectToRouteResult(

           new RouteValueDictionary{{ "controller", "LogOn" },

                                          { "action", "Unauthorized" }


                                         });


    }

}


查看完整回答
反对 回复 2019-11-11
  • 3 回答
  • 0 关注
  • 601 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信