【发布时间】:2018-05-24 13:24:15
【问题描述】:
我想构造一个不调用 Identity 或 OWIN 的自定义授权属性。本质上,它应该有权访问的唯一内容是请求上下文以及告诉 MVC 框架继续处理请求或拒绝它的能力。
问题在 ASP.NET Core 2 中是否有一种简单的方法可以实现这一点?
一些想法 我对 ASP.NET Core 的理解是,它提供了一种使用不同中间件自定义请求管道的方法。我已经看到有一些特定的用于身份验证,但它们似乎都非常特定于 Identity。
使用不同类型的过滤器会更好吗?
【问题讨论】:
-
不太确定您在寻找什么,因为这基本上已经是这种情况(至少部分如此)。授权中间件与身份完全分离。从技术上讲,OWIN 没有任何区别,因为这完全是 ASP.NET Core 的基础。然而,这在 Kestrel 中更是如此。
-
我正在寻找一个示例,说明如何创建从 authorizeattribute 继承的属性,就像在 ASP.NET MVC(.NET 框架版本)中可以完成的一样。
-
这并不是更清楚。我的意思是简单地说,它和以前一样。您只需创建一个新类,从
AuthorizeAttribute继承并覆盖您想要的任何内容。也就是说,你真的不需要也可能不应该这样做。 ASP.NET Core 现在有基于策略的授权,这可能是你最好的解决方案:docs.microsoft.com/en-us/aspnet/core/security/authorization/… -
感谢您的链接!我认为主要问题是 ASP.NET Core 强制用户使用这种基于策略的新身份验证,这可能并不适用于所有情况,特别是如果您需要编写自定义身份验证和授权逻辑。
-
这就是策略。这是自定义逻辑。基于策略的身份验证为您提供了一种简单的方法来做到这一点,而无需走不明智的路线,例如从 AuthorizeAttribute 派生。而且,这不是强迫的。这完全是可选的。每个组件都是完全可选的。
标签: asp.net authentication asp.net-core