- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前有 2 个过滤器,Auth 和 Redirect,它们执行以下操作:Filter Auth,实现 IAuthorizationFilter 和 ActionFilter,检查用户登录和授权,如果失败则将 filterContext.Result 设置为 403 的 HttpStatusCodeResult(禁止).实现 IActionFilter 和 ActionFilter 的 Filter Redirect 检查结果,如果是 403,则重定向到登录页面。
我将它们应用于如下操作:
[Auth(Order=0)]
[Redirect(Order=1)]
但是,Auth 被执行但 Redirect 永远不会被执行(不是它提供的 4 个可覆盖方法之一)。如果我删除 Auth Redirect 会被执行,但如果我将 Auth 包含为第一个过滤器,则不会执行 Redirect。我想设置过滤器上下文的 Result 属性会阻止任何其他过滤器被执行,但我无法理解为什么会这样。仅供引用,我使用的是 ASP.NET MVC 3 beta,但这不会改变任何内容。
更新:将 Auth 的过滤器类型更改为 IActionFilter 而不是 IAuthorizationFilter 会导致 Redirect 中的 OnResultExecuting 和 OnResultExecuted 触发,但更改那里的 Response 对浏览器的最终响应没有任何影响。
最佳答案
我最终通过将 Redirect 设置为 IResultFilter 并在 OnResultExecuting 中编写以下内容来修复它:
filterContext.HttpContext.Response.Redirect(url);
关于asp.net-mvc - ASP.NET MVC 操作过滤器 : Setting the filterContext. 过滤器中的结果阻止其他过滤器被执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4056513/
filterContext.ExceptionHandled 属性是否曾经被 MVC 设置为 true 或者它是否仅被用户代码设置为 true?如果是这样,这是在哪里发生的? 最佳答案 filterC
我看过很多指南,其中自定义授权过滤器的实现涉及调用 base.OnAuthorization(filterContext) 作为最后一步。我有我自己的自定义授权过滤器,它在没有上面提到的情况下工作得很
我只是在看我的一些旧代码,我有一个 Action 过滤器(OnActionExecuting 方法) 最后我有 base.OnActionExecuting(filterContext); 为什么到
在我的 OnActionExecuting 事件中,我想重定向到 Controller 操作方法,但似乎我必须传递 URL。 我不想对 URL 进行硬编码,尤其是当我不知道根 URL 时,即它可能是子
在我的 OnActionExecuting 事件中,我想重定向到 Controller 操作方法,但似乎我必须传递 URL。 我不想对 URL 进行硬编码,尤其是当我不知道根 URL 时,即它可能是子
我有一个应用了属性的 Controller 操作,如果 ModelState 有错误,它会将它们设置为 OnResultExecuting 方法中的 JsonResult。 我在 MyAction 中
只是好奇,它们听起来很相似。 ExecuteCore() 与 OnActionExecuting(ActionExecutingContext filterContext) 之间有什么区别? 在什么情
我刚刚将 Application Insights 安装到我的 .Net MVC Web 应用程序中。在 Web.config 文件中进行了几处更改,其中之一是 ... 这对我来说似乎很好。问题
我遇到了一个我不知道如何解决的问题。 我的问题的上下文是基于需要在 session 变量丢失时将用户重定向到登录。 我们正在做的是对 Controller Action 进行装饰,预览以执行 Acti
在 RC1 之前我们做了这样的事情: public void OnAuthorization(AuthorizationContext filterContext) { if
我不确定我遗漏了什么,但我真的无法引用 OnActionExecuting(ActionExecutingContext filterContext) 下的 User.Identity using S
在 AspNetCore 中,给定一个 FilterContext,我正在寻找一个路由模板,例如{controller}/{action}/{id?} 在 Microsoft.AspNet.WebAp
我目前有 2 个过滤器,Auth 和 Redirect,它们执行以下操作:Filter Auth,实现 IAuthorizationFilter 和 ActionFilter,检查用户登录和授权,如果
从字面上看,它是一个 bool 值,表示该 Action 是否为子 Action 。 我经常看到这段代码: protected override void OnActionExecuting(Acti
我需要仅过滤 Controller 操作中具有返回类型 ActionResult 的所有操作中的方法。我从以下获取 Controller 名称和操作名称.. string originControll
情况是这样的: 我找不到获取传递给 POST 操作方法的 viewModel 的方法。 [HttpPost] public ActionResult Edit(SomeCoolModel viewMo
我有一个 ASP.NET MVC 3 项目,其中包含模型绑定(bind)到 View 模型的 POST 操作 [HttpPost] public virtual ActionResult Reply(
我是一名优秀的程序员,十分优秀!