我已装饰我的基本控制器与一对夫妇的作用的过滤器。它们工作得很好。

其中一个过滤器的建立请求 - 做事等设定基于所述域等方面的培养

我也有需要使用授权的属性授权行动屈指可数。

我的问题是,当一个用户试图请求它们未被授权访问的网页时,在授权滤波器踢和它们重定向到一个页面告诉他们,他们不能争夺的页面。

在的问题是,操作筛选从未运行所以文化等请求数据永远不会设置。这有效地导致语言是错在视图和其它数据会丢失。

我知道,授权的过滤器首先运行,但我的问题是:我如何设计这个,这样我可以确保某些方法的观点之前,始终运行返回,无论授权

希望是有道理的。

有帮助吗?

解决方案

根据该文档 (下滤波器阶标题),授权滤波器总是行动过滤器之前运行。这意味着,Order性能搞乱也无济于事。

我想处理这个最好的办法是写自己的授权属性(通过继承AuthorizeAttribute和压倒一切的AuthorizeCore)和运行操作时授权失败手动过滤器。

其他提示

请参阅的执行用于操作过滤器的上阶行动MSDN文章过滤器

基本上,你可以对这些文化的过滤器,这样它运行提供一个Order属性的的授权过滤器,这样的事情:

[CultureRedirect(Order = 1)]
public class MyBaseController : Controller { }

[Authorize(Order = 2)]
public class RequiresAuth : MyBaseController { }

...

如果失败了,你仍然可以 执行代码bfore一个动作执行 并任何ActionFilter之前将执行。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top