构建MVC3应用程序,TPTB希望我们使用他们的自定义授权提供程序 . 但是,在开发过程中,这个身份验证提供程序很麻烦,因为它会在您关闭/重新启动浏览器时发出错误,或者需要您在每次编译时重新记录o .
现在,我刚刚将 <authentication mode="None"/>
添加到web.config中,这可以正常工作,直到遇到使用 [Authorize(Roles = "Admin")]
过滤器的操作或控制器(它可以是任何角色,而不仅仅是Admin) . 当它击中其中一个时,它只会呈现一个空白页面 .
全球有没有办法暂时关闭这些过滤器?或者只是在我开发时为用户提供所有角色?
EDIT
让我澄清一下 - 我实际上正在将一个大型应用程序从MVC2移植到MVC3 . 它有很多 [Authorize(Roles="Admin")]
和 [Authorize(Roles="Admin,Editor")]
. 如果可能的话,我宁愿不改变所有这些 .
我应该创建一个自动提供所有角色的小型自定义角色提供程序吗?
3 回答
您可以编写自定义授权过滤器,如果请求来自
localhost
,则不会执行任何检查:您可以从
AuthorizeAttribute
继承并使用#if DEBUG
指令单独实现 .或
#define YOUR_OWN_FLAG
在任何构建,调试或发布中打开和关闭行为 .对于Web API: