C# authorized属性没有';在dotnet core webapi 2.1应用程序中使用JWT进行有效授权

C# authorized属性没有';在dotnet core webapi 2.1应用程序中使用JWT进行有效授权,c#,authorization,jwt,asp.net-core-webapi,netcoreapp2.1,C#,Authorization,Jwt,Asp.net Core Webapi,Netcoreapp2.1,我正在尝试在核心webapi应用程序中使用JWT。这是我的启动。ConfigureServices(): 无论如何,我已经创建了一个要测试的保护操作(我希望返回http401unauthorized错误): 下面是JSON的输出: { "identities": [ { "isAuthenticated": false, "claims": [], "roleClaimType": "http://s

我正在尝试在核心webapi应用程序中使用JWT。这是我的
启动。ConfigureServices()

无论如何,我已经创建了一个要测试的保护操作(我希望返回
http401unauthorized
错误):

下面是JSON的输出:

{
    "identities": [
        {
            "isAuthenticated": false,
            "claims": [],
            "roleClaimType": "http://schemas.microsoft.com/ws/2008/06/identity/claims/role",
            "nameClaimType": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"
        }
    ],
    "identity": {
        "isAuthenticated": false,
        "claims": [],
        "roleClaimType": "http://schemas.microsoft.com/ws/2008/06/identity/claims/role",
        "nameClaimType": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"
    },
    "claims": []
}

主要的问题是,当您使用
.AddMvcCore()
时,您只连接了使用
.AddMvc()
时所获得的一小部分内容。对于许多解决方案,只使用后者更简单,因为您会自动添加以下内容并准备使用[]:

  • API浏览器
  • 授权书
  • 观点
  • Razor视图引擎
  • 剃须刀页面
  • JSON格式化程序
  • 科尔斯
  • (其他几个)
如果您只想添加您绝对需要的内容,您可以选择使用
.AddMvcCore()
,但是您需要显式地添加所需的MVC服务;e、 g.在这种情况下(授权),您需要

services.AddMvcCore()
        .AddAuthorization();

注意这里的
.AddAuthorization()
是如何应用于
服务的结果的。AddMvcCore()
,这是一个
IMvcBuilder
,而不是
服务
,这是一个
iSeries收集
主要问题是,当您使用
.AddMvcCore()
时,当您使用
.AddMvc()
时,您只需要连接一小部分内容。对于许多解决方案,只使用后者更简单,因为您会自动添加以下内容并准备使用[]:

  • API浏览器
  • 授权书
  • 观点
  • Razor视图引擎
  • 剃须刀页面
  • JSON格式化程序
  • 科尔斯
  • (其他几个)
如果您只想添加您绝对需要的内容,您可以选择使用
.AddMvcCore()
,但是您需要显式地添加所需的MVC服务;e、 g.在这种情况下(授权),您需要

services.AddMvcCore()
        .AddAuthorization();

注意这里的
.AddAuthorization()
是如何应用于
服务的结果的。AddMvcCore()
,它是一个
IMvcBuilder
,而不是
服务
,这是一个
IServiceCollection

在控制器操作中放置一个断点,并检查用户声明和身份,以查看经过身份验证的身份来自何处。这应该能提供一些线索…@sellotape没有什么重要的消息。声明和身份是空的。查看更新以查看完整的
User
对象。我认为您缺少
services.AddAuthorization()
ConfigureServices()
…@sellotape中我添加了
services.AddAuthorization()
但没有更改):谢谢;我现在添加了一个答案。在控制器操作中放置一个断点,并检查用户声明和身份,以查看经过身份验证的身份来自何处。这应该能提供一些线索…@sellotape没有什么重要的消息。声明和身份是空的。查看更新以查看完整的
User
对象。我认为您缺少
services.AddAuthorization()
ConfigureServices()
…@sellotape中我添加了
services.AddAuthorization()
但没有更改):谢谢;我现在添加了一个答案。
[HttpGet]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
public async Task<object> Info() {
    return User;
}
{
    "identities": [
        {
            "isAuthenticated": false,
            "claims": [],
            "roleClaimType": "http://schemas.microsoft.com/ws/2008/06/identity/claims/role",
            "nameClaimType": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"
        }
    ],
    "identity": {
        "isAuthenticated": false,
        "claims": [],
        "roleClaimType": "http://schemas.microsoft.com/ws/2008/06/identity/claims/role",
        "nameClaimType": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"
    },
    "claims": []
}
services.AddMvcCore()
        .AddAuthorization();