Я внедряю аутентификацию на основе ролей для ядра webpi asp.net. Я почти последовал этому уроку.
https://medium.com/@engr.mmohsin/asp-net-core-2-0-webapi-jwt-role-based-authentication-authorization-with-custom-tables-and-identity-401c898d9ef1
После входа в систему с учетной записью управления [Authorize(Roles = "Manager")]
всегда возвращается неавторизованным.
В классе контроллера
[Route("api/[controller]")]
[Authorize(Roles = "Manager")]
Генерирующий токен в методе входа класса обслуживания
var claims = new[] {
new Claim("Name", user.Name),
//few other claims
new Claim(ClaimTypes.Role, user.Role.ToString())
};
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["Jwt:Key"]));
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
var token = new JwtSecurityToken(_config["Jwt:Issuer"],
_config["Jwt:Issuer"],
claims,
expires: DateTime.Now.AddMinutes(30),
signingCredentials: creds);
return new JwtSecurityTokenHandler().WriteToken(token);
В startup.cs
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = Configuration["Jwt:Issuer"],
ValidAudience = Configuration["Jwt:Issuer"],
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:Key"]))
};
});
Кто-то, пожалуйста, объясните, в чем проблема этого кода?
HTTP-запрос
Решено: Это не происходит с приложением кода. ИспользованиеAuthentication ()