同时运行授权未经验证的ASP.NET MVC请求筛选和过滤作用
-
20-09-2019 - |
题
我已装饰我的基本控制器与一对夫妇的作用的过滤器。它们工作得很好。
其中一个过滤器的建立请求 - 做事等设定基于所述域等方面的培养
我也有需要使用授权的属性授权行动屈指可数。
我的问题是,当一个用户试图请求它们未被授权访问的网页时,在授权滤波器踢和它们重定向到一个页面告诉他们,他们不能争夺的页面。
在的问题是,操作筛选从未运行所以文化等请求数据永远不会设置。这有效地导致语言是错在视图和其它数据会丢失。
我知道,授权的过滤器首先运行,但我的问题是:我如何设计这个,这样我可以确保某些方法的观点之前,始终运行返回,无论授权
。希望是有道理的。
解决方案
根据该文档 (下滤波器阶标题),授权滤波器总是行动过滤器之前运行。这意味着,Order
性能搞乱也无济于事。
我想处理这个最好的办法是写自己的授权属性(通过继承AuthorizeAttribute
和压倒一切的AuthorizeCore
)和运行操作时授权失败手动过滤器。
其他提示
请参阅的执行用于操作过滤器强>的上阶行动MSDN文章过滤器
基本上,你可以对这些文化的过滤器,这样它运行提供一个Order
属性的前的授权过滤器,这样的事情:
[CultureRedirect(Order = 1)]
public class MyBaseController : Controller { }
[Authorize(Order = 2)]
public class RequiresAuth : MyBaseController { }
...
如果失败了,你仍然可以 执行代码bfore一个动作执行 并任何ActionFilter之前将执行。
不隶属于 StackOverflow