net 6 webapi jwt认证代码
时间: 2023-07-22 10:12:31 浏览: 44
以下是使用.NET 6 Web API进行JWT认证的示例代码:
1. 首先,安装所需的NuGet包:
```
dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer
dotnet add package System.IdentityModel.Tokens.Jwt
```
2. 在Program.cs文件中进行配置:
```csharp
using Microsoft.IdentityModel.Tokens;
var builder = WebApplication.CreateBuilder(args);
// 添加JWT认证服务
builder.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")) // 密钥
};
});
builder.Services.AddControllers();
var app = builder.Build();
app.UseAuthentication();
app.MapControllers();
app.Run();
```
3. 创建一个控制器来处理需要认证的请求:
```csharp
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
[ApiController]
[Route("api/[controller]")]
public class MyController : ControllerBase
{
[Authorize]
[HttpGet("protected")]
public IActionResult Protected()
{
// 受保护的路由,只有经过认证的用户才能访问
return Ok("You have accessed the protected route.");
}
// 其他需要认证的方法和路由
}
```
在上述代码中,我们使用`[Authorize]`特性来标记需要进行认证的方法或路由。只有经过认证的用户才能访问受保护的路由。认证是通过在请求的`Authorization`标头中传递JWT令牌来实现的。
确保将示例代码中的"your_issuer"、"your_audience"和"your_secret_key"替换为适合你的实际情况的值。这些值应与生成JWT令牌时使用的值相匹配。