C# authorized属性没有';在dotnet core webapi 2.1应用程序中使用JWT进行有效授权
我正在尝试在核心webapi应用程序中使用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
启动。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();