这个主要是为了方便使用swagger时,能更好的带入我们的token。
ps:如果使用其他第三方api工具(apipost、postman等)则不需要。
(当然,不用不能没有,是吧)
1、在AddSwaggerGen内添加代码
var itemName = "plateau.poetize.blog.webapi";
//把jwt加入到swagger中
c.AddSecurityDefinition(itemName, new OpenApiSecurityScheme
{
Description = "请输入token,格式为 【Bearer JWT字符串】(注意中间必须有空格)",
Name = "Authorization",//jwt默认的参数名称
In = ParameterLocation.Header,//jwt默认放入请求头中
Type = SecuritySchemeType.ApiKey,
BearerFormat = "JWT",
Scheme = "Bearer"
});
//swagger遵守jwt授权协议
c.AddSecurityRequirement(new OpenApiSecurityRequirement
{
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference
{
Type = ReferenceType.SecurityScheme,
Id = itemName
}
},
new string [] {}
}
});
2、运行后:
运行后,接口这就有了一个按钮,点击就会弹出一个可输入token的界面,在输入框中输入需要的格式即可。
3、测试权限:
/// <summary>
/// 测试权限1(需要token)
/// </summary>
/// <returns></returns>
[Authorize]
[HttpGet]
public string Test()
{
return "ok! 1";
}
/// <summary>
/// 测试权限2 (无权限要求)
/// </summary>
/// <returns></returns>
[AllowAnonymous]
[HttpGet]
public string Test2()
{
return "ok! 2";
}
其中标注了 [Authorize]的代表需要token,[AllowAnonymous]则不需要
记得注入服务:(在app.MapControllers();之前的位置)
app.UseAuthentication();
app.UseAuthorization();
4、测试。(这里已测试过了,已通过。就不在贴图了,去写下一篇博客了,有问题可以评论联系我哦)
5、拓展:
5.1、是否可以加登录才可以查看这些列表呢?
5.2、屏蔽特定的接口或者控制器(实际可以用,但是不可见)