EF Core WebApi配置JWT
时间: 2024-01-18 11:48:43 浏览: 42
要在 EF Core WebApi 中配置 JWT,您需要遵循以下步骤:
1. 安装 Microsoft.AspNetCore.Authentication.JwtBearer NuGet 包。
2. 在 Startup.cs 文件中的 ConfigureServices 方法中添加以下代码:
```csharp
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = 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"))
};
});
```
3. 在 Configure 方法中添加以下代码:
```csharp
app.UseAuthentication();
```
4. 在控制器或方法上添加 [Authorize] 特性,以保护需要授权的操作。
5. 生成 JWT Token 以供测试。可以使用以下代码:
```csharp
var tokenHandler = new JwtSecurityTokenHandler();
var key = Encoding.ASCII.GetBytes("your secret key");
var tokenDescriptor = new SecurityTokenDescriptor
{
Subject = new ClaimsIdentity(new Claim[]
{
new Claim(ClaimTypes.Name, "your username")
}),
Expires = DateTime.UtcNow.AddMinutes(30),
SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
};
var token = tokenHandler.CreateToken(tokenDescriptor);
var tokenString = tokenHandler.WriteToken(token);
```
请注意,这只是一个示例代码片段,您需要根据自己的需求进行修改。