ASP.NET Core Web API 依赖注入及JWT认证配置

如何新建项目我们在此直接跳过。Target framework我选的是.NET6.0,但是starpup我还是沿用了老的书写方式,当然采用新的书写方式代码会更精简,都是可以的。

前端采用React开发,请参阅:React中利用axios进行Jwt登录认证

program.cs代码简单明了:

public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>()
                    .UseDefaultServiceProvider(options =>
                    {
                    }); 
                });

    }

startup.cs代码有点多:

 public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;

            var builder = new ConfigurationBuilder().AddJsonFile("appsettings.json", false, true)
                .AddEnvironmentVariables();

            Configuration = builder.Build();
        }

        public IConfiguration Configuration { get; set; }
        
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
                // 采用的是Jwt认证方式,必要的配置项在appsettings.json中设置
                // Jwt认证的配置项比较多,此处只做了最基本的。有需要的话可以查询相关文档
                .AddJwtBearer(options =>
                {
                    options.TokenValidationParameters = new TokenValidationParameters
                    {
                        ValidateIssuer = true,
                        ValidateAudience = true,
                        ValidateLifetime = true,
                        ClockSkew = TimeSpan.Zero,
                        ValidateIssuerSigningKey = false,
                        ValidAudience = Configuration.GetSection("JwtSettings")["Audience"],
                        ValidIssuer = Configuration.GetSection("JwtSettings")["Issuer"],
                        IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.
                                    GetBytes(Configuration.GetSection("JwtSettings")["SecretKey"])),
                    };

                    options.Events = new JwtBearerEvents()
                    {
                        OnAuthenticationFailed = (context) =>
                        {
                            var x = context.Exception;
                    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值