在 ASP.NET Core 8.0 中使用 JWT(JSON Web Token)进行安全身份验证,需结合 Microsoft.AspNetCore.Authentication.JwtBearer 包实现。以下是 全流程标准化处理方案,涵盖生成、验证、加密和最佳实践:
1. 安装必要 NuGet 包
dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer
dotnet add package System.IdentityModel.Tokens.Jwt
2. 配置 JWT 参数(appsettings.json)
json
{
"Jwt": {
"SecretKey": "YourSuperSecretKeyAtLeast256BitsLong", // 实际项目使用更复杂的密钥
"Issuer": "https://yourdomain.com",
"Audience": "https://yourdomain.com",
"ExpireMinutes": 60
}
}
3. 注册 JWT 服务(Program.cs文件中内容)
using AspNetCoreRateLimit;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.IdentityModel.Tokens;
using System.Text;
namespace HdhCmsApi
{
public class Program
{
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
#region 添加 JWT 认证服务
// 添加 JWT 认证服务
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = builder.Configuration["Jwt:Issuer"],
ValidAudience = builder.Configuration["Jwt:Audience"],
IssuerSigningKey = new SymmetricSecurityKey(
Encoding.UTF8.GetBytes(builder.Configuration["Jwt:SecretKey"]!)),
ClockSkew = TimeSpan.Zero // 严格校验过期时间
};
&


4706

被折叠的 条评论
为什么被折叠?



