我有一个关于各种控制器的操作列表,这些控制器是“管理”功能(创建、更新、删除),但在这些相同的控制器上的其他操作不是管理员操作。
我想要做的是创建一个路由,该路由将/Admin/
在所有调用具有Authorize
过滤器属性的操作的 url 之前添加前缀。
这甚至可能吗?
我有一个关于各种控制器的操作列表,这些控制器是“管理”功能(创建、更新、删除),但在这些相同的控制器上的其他操作不是管理员操作。
我想要做的是创建一个路由,该路由将/Admin/
在所有调用具有Authorize
过滤器属性的操作的 url 之前添加前缀。
这甚至可能吗?
是的,一切皆有可能,但我认为你的意思是容易做到吗?答案是否定的。您要做的是创建自己的路由,然后将此自定义路由添加到路由映射中。这并不难做到,但问题在于路由在控制器之前初始化,因此您必须自己处理查找和反射以检查您的标准。
还有一个替代选项,您可以尝试使用 ActionMethodSelectorAttribute ,它允许您为您的操作方法创建自定义选择器并忽略不包含 Authorize 属性的选择器。使用此属性的一个示例是 ActionVerbAttribute。
到目前为止,最简单的方法是为 Html.ActionLink 创建一个自定义扩展,该扩展进行自己的检查并将其保留为仅显示的内容,然后在 Global.asax 中为同一控制器创建双路由。