【发布时间】:2015-09-07 13:40:04
【问题描述】:
我们正忙于将旧版 ASP.NET Web 表单应用程序移植到 MVC。一些模块已正确设置其有效的Authorize 属性,但只有 1 个模块上线。
所以我们必须防止用户导航到不同的模块(这些模块在那里,但还没有“实时”)。我们不想干预现有的Authorize 属性,但用户目前不允许访问这些模块。
以下是我的想法和不足:
在
Global.asax订阅Application_AuthenticateRequest并获得“实时”控制器列表,检查请求 URL 并在必要时抛出并重定向到“未授权页面”。但是,我将不得不手动考虑 routing 在哪里 URL 可能mysite/可以路由到mysite/Foo/Bar/。传统的
web.configauthorization可以用于这种情况吗? (这比第 1 点更容易维护,但网络上到处都是不要在 MVC 中执行此操作)
类似这样,Customer 是控制器:
<location path="Customer">
<system.web>
<authorization>
<deny users="*" />
</authorization>
</system.web>
</location>
- 或者尝试一下,注释掉所有未激活的控制器中的
Authorize属性:( 希望不要走这条路...
我们将不胜感激。
【问题讨论】:
-
在 Web 配置中创建一个密钥,您可以在其中指定 Beta 阶段的控制器列表。在另一个属性(如 BetaAuthorizationAttribute)中获取该列表并将您的用户重定向到某处 stackoverflow.com/questions/1498727/… 或 stackoverflow.com/questions/20123589/… 可能是您的一些参考
-
感谢@RazvanDumitru,这是一个绝妙的主意。不幸的是,这意味着不得不更改现有的
Authorize属性,但一旦完成,我就可以轻松控制对实时与测试版或控制器的访问。
标签: c# asp.net asp.net-mvc authorization