在开发过程中绕过或关闭 [Authorize(Roles="")]?

2024-02-15

构建 MVC3 应用程序,TPTB 希望我们使用他们的自定义授权提供程序。然而,在开发过程中,这个身份验证提供程序有点麻烦,因为它要么在您关闭/重新启动浏览器之前给出错误,要么要求您在每次编译时重新登录。

现在,我只是添加了<authentication mode="None"/>到 web.config,它工作正常,直到我遇到使用[Authorize(Roles = "Admin")]过滤器(可以是任何角色,而不仅仅是管理员)。当它命中其中一个时,它只会呈现一个空白页面。

有没有办法在全球范围内暂时关闭这些过滤器?或者在我开发过程中为用户提供所有角色?

EDIT

让我澄清一下 - 我实际上是将一个大型应用程序从 MVC2 移植到 MVC3。它有很多[Authorize(Roles="Admin")] and [Authorize(Roles="Admin,Editor")]贯穿其中。如果可能的话,我宁愿不改变所有这些。

我是否应该创建一个自动提供所有角色的小型自定义角色提供程序?


您可以编写一个自定义授权过滤器,如果请求来自,则该过滤器不会执行任何检查localhost:

public class MyAuthorizeAttribute : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        if (httpContext.Request.Url.IsLoopback)
        {
            // It was a local request => authorize the guy
            return true;
        }

        return base.AuthorizeCore(httpContext);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在开发过程中绕过或关闭 [Authorize(Roles="")]? 的相关文章

随机推荐