问题描述:在ASP.NET Core中,使用授权属性和JWT进行身份验证和授权时,发现无法正常工作。需要提供解决方法,包含代码示例。
解决方法:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = "your_issuer",
ValidAudience = "your_audience",
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("your_secret_key"))
};
});
请确保替换"your_issuer"、"your_audience"和"your_secret_key"为实际的值。
[Authorize]
public class MyController : ControllerBase
{
// ...
}
[Authorize(Roles = "admin")]
public IActionResult AdminOnlyAction()
{
// ...
}
[Authorize]
public IActionResult MyAction()
{
var userId = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier)?.Value;
// ...
}
请注意,以上解决方法仅提供了基本的示例和指导,具体的实现可能因应用程序的需求而有所不同。