ASP.Net核心承载认证+flutter客户端
ASP.Net Core Bearer Authentication + flutter client
我在 ASP.NET Core 3.1 Web Api 项目中遇到 Bearer Authentication 问题。
我这样配置身份验证:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.RequireHttpsMetadata = false;
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidIssuer = AuthHelper.Issuer,
ValidateAudience = true,
ValidAudience = AuthHelper.Audience,
ValidateLifetime = true,
IssuerSigningKey = AuthHelper.GetSymmetricSecurityKey(),
ValidateIssuerSigningKey = true,
};
});
此外,我在控制器中添加了 [Authorize]
属性,在 Configure 方法中添加了 app.UseAuthorization();
。
我在 Postman 中配置了请求。我尝试在“授权”选项卡和手动方式(添加“授权”header)中配置授权。同样的结果:我得到了正确的答案,没有任何错误。
但是,当我从 flutter 应用程序发送请求时,出现“404 Not Found”错误。
从 flutter 应用获取请求:
Map<String, String> authHeaders = <String, String>{
'Content-Type': 'application/json; charset=UTF-8',
'Authorization': 'Bearer $authToken'
};
final response = await http.get(_url, headers: authHeaders);
有什么想法吗?我错过了什么?
我知道问题出在哪里了。
我的controller依然使用Cookies认证方式(不是bearer)
解决方法:将[Authorize]
替换为[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
为什么 Postman 的请求可以正常工作?
Postman 设置cookie 并记住其他请求的Cookie。
因此,当我测试登录控制器时,邮递员将 .AspNetCore.Identity.Application
cookie 添加到自己的集合中。
我在 ASP.NET Core 3.1 Web Api 项目中遇到 Bearer Authentication 问题。
我这样配置身份验证:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.RequireHttpsMetadata = false;
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidIssuer = AuthHelper.Issuer,
ValidateAudience = true,
ValidAudience = AuthHelper.Audience,
ValidateLifetime = true,
IssuerSigningKey = AuthHelper.GetSymmetricSecurityKey(),
ValidateIssuerSigningKey = true,
};
});
此外,我在控制器中添加了 [Authorize]
属性,在 Configure 方法中添加了 app.UseAuthorization();
。
我在 Postman 中配置了请求。我尝试在“授权”选项卡和手动方式(添加“授权”header)中配置授权。同样的结果:我得到了正确的答案,没有任何错误。
但是,当我从 flutter 应用程序发送请求时,出现“404 Not Found”错误。
从 flutter 应用获取请求:
Map<String, String> authHeaders = <String, String>{
'Content-Type': 'application/json; charset=UTF-8',
'Authorization': 'Bearer $authToken'
};
final response = await http.get(_url, headers: authHeaders);
有什么想法吗?我错过了什么?
我知道问题出在哪里了。 我的controller依然使用Cookies认证方式(不是bearer)
解决方法:将[Authorize]
替换为[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
为什么 Postman 的请求可以正常工作?
Postman 设置cookie 并记住其他请求的Cookie。
因此,当我测试登录控制器时,邮递员将 .AspNetCore.Identity.Application
cookie 添加到自己的集合中。