【发布时间】:2019-12-07 18:35:59
【问题描述】:
我有这个生成token的方法:
[HttpPost("login")]
public async Task<IActionResult> login(UserForLoginDto userForLoginDto)
{
var userFromRepo = await _repo.Login(userForLoginDto.Username.ToLower(), userForLoginDto.Password);
if(userFromRepo == null)
return Unauthorized();
var claims = new[]
{
new Claim(ClaimTypes.NameIdentifier, userFromRepo.Id.ToString()),
new Claim(ClaimTypes.Name, userFromRepo.Username)
};
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config.GetSection("AppSettings:Token").Value));
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature);
var tokenDescriptor = new SecurityTokenDescriptor
{
Subject = new ClaimsIdentity(claims),
Expires = DateTime.Now.AddDays(1),
SigningCredentials = creds
};
var tokenHandler = new JwtSecurityTokenHandler();
var token = tokenHandler.CreateToken(tokenDescriptor);
return Ok(new{
token = tokenHandler.WriteToken(token)
});
}
当我通过邮递员调用这个 API 时:
localhost:5000/api/auth/login
正文用户名:“john”,密码:“password”
我收到了这个错误:
处理请求时发生未处理的异常。 ArgumentNullException:字符串引用未设置为 a 的实例 细绳。参数名称:s System.Text.Encoding.GetBytes(string s)
因为这条线:
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config.GetSection("AppSettings:Token").Value));
请帮助解决此错误。
【问题讨论】:
-
你能显示你的设置文件吗?
标签: asp.net-core