0

我有一个关于各种控制器的操作列表,这些控制器是“管理”功能(创建、更新、删除),但在这些相同的控制器上的其他操作不是管理员操作。

我想要做的是创建一个路由,该路由将/Admin/在所有调用具有Authorize过滤器属性的操作的 url 之前添加前缀。

这甚至可能吗?

4

1 回答 1

0

是的,一切皆有可能,但我认为你的意思是容易做到吗?答案是否定的。您要做的是创建自己的路由,然后将此自定义路由添加到路由映射中。这并不难做到,但问题在于路由在控制器之前初始化,因此您必须自己处理查找和反射以检查您的标准。

还有一个替代选项,您可以尝试使用 ActionMethodSelectorAttribute ,它允许您为您的操作方法创建自定义选择器并忽略不包含 Authorize 属性的选择器。使用此属性的一个示例是 ActionVerbAttribute。

到目前为止,最简单的方法是为 Html.ActionLink 创建一个自定义扩展,该扩展进行自己的检查并将其保留为仅显示的内容,然后在 Global.asax 中为同一控制器创建双路由。

于 2009-05-14T13:49:30.637 回答