Jwt启用API授权

Jwt启用API授权

1.注入身份验证的服务,启动用户授权的框架

1.打开startup文件,注册服务

 services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
                .AddJwtBearer(options =>
                {
                    var secretByte = Encoding.UTF8.GetBytes(Configuration["Authentication:SecretKey"]);
                    options.TokenValidationParameters = new TokenValidationParameters()
                    {
                        ValidateIssuer = true,
                        ValidIssuer = Configuration["Authentication:Issuer"],

                        ValidateAudience = true,
                        ValidAudience = Configuration["Authentication:Audience"],

                        ValidateLifetime = true,

                        IssuerSigningKey = new SymmetricSecurityKey(secretByte)
                    };
                });
                

2.在下面configure配置服务

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            //你在哪
            app.UseRouting();
            //你是谁
            app.UseAuthentication();
            //你可以干什么
            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                //endpoints.MapGet("/", async context =>
                //{
                //    await context.Response.WriteAsync("Hello World!");
                //});
                endpoints.MapControllers();
            });
        }

3.使用 [Authorize]设置指定api为登陆才能访问

       [HttpPost]



        //上锁,除了登陆的用户无法访问
        [Authorize]


        public async Task< IActionResult> CreateTouristRoute([FromBody] TouristRouteForCreationDto touristRouteForCreationDto)
        {
            var touristRouteModel = _mapper.Map<TouristRoute>(touristRouteForCreationDto);
            _touristRouteRepository.AddTouristRoute(touristRouteModel);
            await _touristRouteRepository.SaveAsync();
            //touristRouteModel这个数据源投影到TouristRouteDto这个数据模型中
            var touristRouteToReturn = _mapper.Map<TouristRouteDto>(touristRouteModel);
            return CreatedAtRoute("GetTouristRouteById",
                new { touristRouteId = touristRouteToReturn.Id },
                touristRouteToReturn
                );

        }

2.在postman中进行验证

1.未见过登陆
在这里插入图片描述
2.登陆
1.获取token在这里插入图片描述
2.在Hearder中加入token
1.先加入bearer在空格加入token在这里插入图片描述
3.然后再进行创建,就可以了

posted @ 2021-08-23 17:54  有诗亦有远方  阅读(31)  评论(0)    收藏  举报  来源