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.然后再进行创建,就可以了