c# - 使用 JWT 添加 [Authorize] 时无法访问页面
问题描述
一个多星期后,我尝试在我的 API 中使用 JWT,当我从邮递员发送 jwt 令牌或想要以 json 格式获取数据并在我的控制器上添加 Authorize 属性时,我收到错误 404
这些是我的代码:
这是我在单独类中的板条生成器:
public static string GenerateJsonWebToken()
{
var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(CreateSlatConstant.Secret));
var credetials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);
var claims = new[] {
new Claim(JwtRegisteredClaimNames.Sub,"123"),
new Claim("Admin","true"),
};
var token = new JwtSecurityToken(
CreateSlatConstant.Issuer,
CreateSlatConstant.Audiance,
claims,
notBefore:DateTime.Now,
expires:DateTime.Now.AddMinutes(120),
signingCredentials:credetials);
return new JwtSecurityTokenHandler().WriteToken(token);
}
这是 JWTcontroller 通过此地址调用 slat https://localhost:44305/api/Jwt
[ApiController]
[Route("api/[controller]")]
public class JWTController : ControllerBase
{
public IActionResult JwtToken()
{
var tt = MI.Core.CreateSalt.GenerateJsonWebToken();
return Ok(tt);
}
}
这是我的 Api 项目中的 startup.cs
services.AddAuthentication("OAuth")
.AddJwtBearer("OAuth", option =>
{
option.TokenValidationParameters = new TokenValidationParameters
{
ValidIssuer = CreateSlatConstant.Issuer,
ValidAudience = CreateSlatConstant.Audiance,
IssuerSigningKey = new
SymmetricSecurityKey(Encoding.UTF8.GetBytes(CreateSlatConstant.Secret))
};
});
这是我的控制,邮递员用令牌打电话
[Route("api/[controller]")]
[ApiController]
[Authorize]
public class CompanyNameController : ControllerBase
{
private ICompanyNameRepository _companyNameRepository;
private IMapper _mapper;
public CompanyNameController(ICompanyNameRepository companyNameRepository, IMapper mapper)
{
_companyNameRepository = companyNameRepository;
_mapper = mapper;
}
[HttpGet]
public async Task<IActionResult> GetCarCompanyAsync()
{
var cmObj = await _companyNameRepository.GetAllAsync();
var cvvm = new List<CompanyNameVM>();
foreach (var obj in cmObj)
{
cvvm.Add(_mapper.Map<CompanyNameVM>(obj));
}
return Ok(cvvm);
}
在邮递员中发送带有我从 https://localhost:44305/api/Jwt 获得的令牌的 get 请求
在这种情况下,我收到错误消息,如果我删除 [Authorize] 属性,则无法访问此站点, 它可以正常工作,我的错误是什么?
解决方案
推荐阅读
- powershell - 将 if 语句的输出分配给变量 powershell
- python - Python - 遍历列表并添加 OR 选项
- django-rest-framework - 既然 Django 模板可用,为什么我们需要 Django REST 框架?
- python - 如何抓取网站并将数据放入文件中?
- linux - 提取文件中以相同模式开头的子字符串
- python - 比较打字对象的外部类型
- r - 在R中的列表列表中组合元素
- vue.js - Vue游戏:画布未清除
- node.js - Sequelize setter错误'整数的输入语法无效:“[object Object]”'
- node.js - 通配符导入在 es2020 的 node14 中不起作用