Asp.net 不带标识和OWIN的自定义授权属性

Asp.net 不带标识和OWIN的自定义授权属性,asp.net,authentication,asp.net-core,Asp.net,Authentication,Asp.net Core,我想构造一个不调用Identity或OWIN的自定义授权属性。本质上,它应该访问的唯一内容是请求上下文,以及告诉MVC框架继续处理请求或拒绝请求的能力 问题在ASP.NET Core 2中是否有一种简单的方法来实现这一点 一些想法 我对ASP.NET核心的理解是,它提供了一种使用不同中间件定制请求管道的方法。我已经看到,有一些特定的用于身份验证,但它们似乎都非常特定于身份 使用不同类型的过滤器是否更好?回答有点晚,但仍然。。重写属性的“旧”方式在.Net Core 2.0中出现,除了基类之外,还

我想构造一个不调用Identity或OWIN的自定义授权属性。本质上,它应该访问的唯一内容是请求上下文,以及告诉MVC框架继续处理请求或拒绝请求的能力

问题在ASP.NET Core 2中是否有一种简单的方法来实现这一点

一些想法 我对ASP.NET核心的理解是,它提供了一种使用不同中间件定制请求管道的方法。我已经看到,有一些特定的用于身份验证,但它们似乎都非常特定于身份


使用不同类型的过滤器是否更好?

回答有点晚,但仍然。。重写属性的“旧”方式在.Net Core 2.0中出现,除了基类之外,还必须实现
IAuthorizationFilter
接口:

[AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
public class CustomAuthorizeAttribute : AuthorizeAttribute, IAuthorizationFilter
{
    private readonly string _someFilterParameter;

    public CustomAuthorizeAttribute(string someFilterParameter)
    {
        _someFilterParameter = someFilterParameter;
    }


    public void OnAuthorization(AuthorizationFilterContext context)
    {
        // you can play with the context here 
    }
}

更多讨论

回答有点晚,但仍然。。重写属性的“旧”方式在.Net Core 2.0中出现,除了基类之外,还必须实现
IAuthorizationFilter
接口:

[AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
public class CustomAuthorizeAttribute : AuthorizeAttribute, IAuthorizationFilter
{
    private readonly string _someFilterParameter;

    public CustomAuthorizeAttribute(string someFilterParameter)
    {
        _someFilterParameter = someFilterParameter;
    }


    public void OnAuthorization(AuthorizationFilterContext context)
    {
        // you can play with the context here 
    }
}

更多的讨论

不确定你在寻找什么,因为基本上情况已经如此(至少部分如此)。授权中间件与身份完全分离。从技术上讲,OWIN并没有什么不同之处,因为它是ASP.NET核心的基础。然而,这更多的是在Kestrel中。我正在寻找一个例子,说明如何创建一个继承自authorizeattribute的属性,就像在ASP.NET MVC(ASP.NET framework版本)中可以做的那样。这还不是很清楚。我的意思是简单地说,它和以前一样。您只需创建一个新类,从
AuthorizeAttribute
继承并重写您想要的任何内容。也就是说,你真的不需要也不应该这么做。ASP.NET Core现在有基于策略的授权,这可能是您最好的解决方案:感谢链接!我认为主要的问题是ASP.NET Core强制用户使用这种新的基于策略的身份验证,这可能不适用于所有情况,特别是当您需要编写自定义身份验证和授权逻辑时。这就是策略。这是自定义逻辑。基于策略的身份验证为您提供了一种简单的方法来实现这一点,而不必走不可取的路线,如从属性派生。而且,这不是强迫的。这完全是可选的。每个组件都是完全可选的。不确定您想要的是什么,因为基本上已经是这种情况(至少部分是这样)。授权中间件与身份完全分离。从技术上讲,OWIN并没有什么不同之处,因为它是ASP.NET核心的基础。然而,这更多的是在Kestrel中。我正在寻找一个例子,说明如何创建一个继承自authorizeattribute的属性,就像在ASP.NET MVC(ASP.NET framework版本)中可以做的那样。这还不是很清楚。我的意思是简单地说,它和以前一样。您只需创建一个新类,从
AuthorizeAttribute
继承并重写您想要的任何内容。也就是说,你真的不需要也不应该这么做。ASP.NET Core现在有基于策略的授权,这可能是您最好的解决方案:感谢链接!我认为主要的问题是ASP.NET Core强制用户使用这种新的基于策略的身份验证,这可能不适用于所有情况,特别是当您需要编写自定义身份验证和授权逻辑时。这就是策略。这是自定义逻辑。基于策略的身份验证为您提供了一种简单的方法来实现这一点,而不必走不可取的路线,如从属性派生。而且,这不是强迫的。这完全是可选的。每个组件都是完全可选的。