【发布时间】:2018-04-22 04:25:58
【问题描述】:
我正在尝试在我的应用程序中同时设置令牌身份验证和 cookie 身份验证。
我在 asp.net core 2.0 中创建了一个 MVC 项目,使用个人用户帐户进行身份验证。也为用户设置角色。
如果我按照 Shawn Wildermuth 的教程 Two-AuthorizationSchemes-in-ASP-NET-Core-2
获取注册用户的 Token 一切正常。但是,如果我在授权 [Authorize(Roles="Admin")] 上使用 Role 属性,我会得到 403 响应。
我认为这是因为令牌没有收到身份验证角色。
如何设置?有什么方法可以在令牌过程中传递角色吗?
要生成他正在使用这段代码的令牌:
[AllowAnonymous]
[HttpPost]
public async Task<IActionResult> GenerateToken([FromBody] LoginViewModel model) { if (ModelState.IsValid) {
var user = await _userManager.FindByEmailAsync(model.Email);
if (user != null)
{
var result = await _signInManager.CheckPasswordSignInAsync(user, model.Password, false);
if (result.Succeeded)
{
var claims = new[]
{
new Claim(JwtRegisteredClaimNames.Sub, user.Email),
new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
};
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["Tokens:Key"]));
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
var token = new JwtSecurityToken(_config["Tokens:Issuer"],
_config["Tokens:Issuer"],
claims,
expires: DateTime.Now.AddMinutes(30),
signingCredentials: creds);
return Ok(new { token = new JwtSecurityTokenHandler().WriteToken(token) });
}
} }
return BadRequest("Could not create token"); }
你们有什么想法吗?
谢谢
【问题讨论】:
标签: c# authentication asp.net-core jwt