asp.net-core - 我在尝试使用 JWT-ASP.NETCORE 3.1 时遇到 ıdx10653 错误
问题描述
这是我在 .net core 3.1 中尝试使用 jwt 时的错误输出,我什么也得不到。
我正在使用 v3.1.10 版本的软件包,
我在邮递员上发布的数据已正确插入到数据库中。但我无法在邮递员响应行上获取令牌。
我的代码:
public AccessToken CreateToken(User user, List<OperationClaim> operationClaims)
{
var securityKey = SecurityKeyHelper.CreateSecurityKey(_tokenOptions.SecurityKey);
var signingCredentials = SingingCredentialsHelper.CreateSigningCredentials(securityKey);
var jwt = CreateJwtSecurityToken(_tokenOptions, user, signingCredentials, operationClaims);
var jwtSecurityTokenHandler = new JwtSecurityTokenHandler();
var token = jwtSecurityTokenHandler.WriteToken(jwt);
return new AccessToken
{
Token = token,
Expiration = _accessTokenExpiration
};
}
public IDataResult<AccessToken> CreateAccessToken(User user)
{
var claims =_userService.GetClaims(user);
var accessToken = _tokenHelper.CreateToken(user, claims);
return new SuccessDataResult<AccessToken>(accessToken, Messages.AccessTokenCreated);
}
[HttpPost("register")]
public ActionResult Register(UserForRegisterDto userForRegisterDto)
{
var userExists = _authService.UserExists(userForRegisterDto.Email);
if (!userExists.Success)
{
return BadRequest(userExists.Message);
}
var registerResult = _authService.Register(userForRegisterDto, userForRegisterDto.Password);
var result = _authService.CreateAccessToken(registerResult.Data);
if (result.Success)
{
return Ok(result.Data);
}
return BadRequest(result.Message);
}
我的错误输出是:
System.ArgumentOutOfRangeException: 'IDX10653: The encryption algorithm 'System.String' requires a key size of at least 'System.Int32' bits. Key 'Microsoft.IdentityModel.Tokens.SymmetricSecurityKey', is of size: 'System.Int32'. '
解决方案
在签名和生成签名凭证之前,SymmetricSecurityKey 中使用的 SecretKey 长度存在限制。密钥 Secret key 应至少为 128 位,即(16 字节)。
所以你可以试着让你的SecurityKey
更长。
推荐阅读
- android - 未经外部存储许可的相机意图,照片公开
- mysql - 加载 MySQLdb 模块时出错。你安装了mysqlclient吗?在 MacOS 上
- excel - 如何通过 Excel VBA 检查 Word 表格单元格是否已填充/为空并将内容复制到 Excel
- python - 向正在运行的 python websocket 客户端发送消息
- kotlin - 在反引号内转义双引号
- laravel - 如何修复我的 laravel 项目中引导模板的消失
- visual-studio-code - 关闭 VSCode 中的 Find 框不会停止突出显示匹配的单词
- java - java.lang.IllegalArgumentException:参数不作为命名参数存在
- sql - 如何编写 Oracle 查询到如下组?
- acumatica - 是否可以自定义要在 Acumatica 日期选择器中选择的日期