基于 .NET Framework 的 .NET Core 2.1 Web API 的授权问题

Posted

技术标签:

【中文标题】基于 .NET Framework 的 .NET Core 2.1 Web API 的授权问题【英文标题】:Authorization on .NET Core 2.1 Web API built on .NET Framework problem 【发布时间】:2020-12-29 08:48:41 【问题描述】:

我正在尝试让 [Authroize] 标记在基于 .NET Framework 的 .NET Core 2.1 Web API 项目上运行。没有 IAppBuilder.UseAuthorization()。我编写了自己的 JWT 自定义身份验证处理程序,并在 Startup 中尝试了以下操作:

 services.AddAuthentication("Basic")
        .AddScheme<BasicAuthenticationOptions, EdcAuthenticationHandler>("Basic", null);

 services.AddAuthorization();

我也有

app.UseAuthentication();

但是,同样没有 app.UseAuthorization()

我希望能够添加 [Authorize] 属性(以及角色)并能够访问我的控制器方法中的 User 对象。

任何见解将不胜感激。

【问题讨论】:

【参考方案1】:

事实证明这很简单。我需要这样的授权标签:

[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddScheme<BasicAuthenticationOptions, EdcAuthenticationHandler>(JwtBearerDefaults.AuthenticationScheme, null);

不需要: app.UseAuthorization();

很抱歉给您带来麻烦。只是想不通我需要授权标签中的方案名称。

【讨论】:

以上是关于基于 .NET Framework 的 .NET Core 2.1 Web API 的授权问题的主要内容,如果未能解决你的问题,请参考以下文章

基于.Net Framework 4.0 Web API开发:ASP.NET Web APIs 基于令牌TOKEN验证的实现

基于.NET的微软ORM框架视频教程(Entity Framework技术)

net framework 3.5起啥作用

Phenix Framework 6 for CSLA:基于.NET Framework 4.5 和 CSLA 4.3.14.0 的 开发框架

Phenix Framework 6 for CSLA:基于.NET Framework 4.5 和 CSLA 4.3.14.0 的 开发框架

Phenix Framework 6 for CSLA:基于.NET Framework 4.5 和 CSLA 4.3.14.0 的 开发框架