【发布时间】:2016-12-06 23:07:25
【问题描述】:
有没有办法在 asp.net 核心中“绕过”授权?我注意到 Authorize 属性不再具有 AuthorizeCore 方法,您可以使用该方法来决定是否继续进行身份验证。
Pre .net core 你可以这样做:
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
// no auth in debug mode please
#if DEBUG
return true;
#endif
return base.AuthorizeCore(httpContext);
}
我希望我不会遗漏一些明显的东西,但如果需要的话,能够跳过 DEBUG 中的身份验证工作流程会很好。我只是无法为 .net core 找到它
【问题讨论】:
-
你不应该派生自
AuthorizeAttribute。查看基于策略的授权。 docs.asp.net/en/latest/security/authorization/policies.html 您可以编写具有多个处理程序的需求,并使用不同的处理程序作为备用,以防第一个未授权(除非第一个调用context.Failed())。后备示例可以在这里找到docs.asp.net/en/latest/security/authorization/… -
感谢@Tseng,这是很好的信息。然而,令人沮丧的是,我们似乎失去了简单地根据您是否处于调试或发布模式来打开/关闭身份验证的能力。所以我是否正确假设我可以将我的 [Authorize] 属性包装在#if DEBUG 指令周围 或 将一些策略/要求/处理程序整合在一起中心位置?那会是什么样子?
-
嗯,是的。但是没有什么能阻止您创建一个基础需求类,您的所有其他需求都来自该类,并在那里添加此检查
-
添加了一个关于如何使用基本需求处理程序的示例
-
这里的解决方案对我来说效果很好。 stackoverflow.com/a/40156927/5329320
标签: c# asp.net-core