編輯于 2020/04/02
基于JWT Bearer驗證授權(quán)的Swagger
簡介
書接上文,本篇基于上篇的Swagger講解在Swagger中添加Jwt Bearer授權(quán)驗證
JWT授權(quán)驗證請查看我的這篇文章
從0到1詳解Jwt以及在Asp.NetCore 3.1中使用JWT Bearer授權(quán)認(rèn)證
如果你是觀看Swagger框架 第一篇然后來看第二篇的話,又對Jwt了解不多的話,請務(wù)必觀看上面鏈接的Jwt詳解,因為此篇是根據(jù)Jwt篇的源碼進(jìn)行添加Swagger講解的
一. 拉取Jwt源碼
本篇文章主要講解Jwt + Swagger,不會過多介紹Git,需要了解相關(guān)知識的請自行百度。
使用Https拉取我的博客源碼,簽出Jwt_Bearer分支即可
git clone https://gitee.com/zyknow/blog_project.git
二. 添加Swagger
1. 根據(jù)第一篇介紹內(nèi)容添加Swagger
- 先根據(jù)第一篇Swagger添加Swagger,這里就不過多演示了。
2. 修改Startups.cs中的ConfigureServices
public void ConfigureServices(IServiceCollection services)
{
//注入Appsettings,這樣才能在任何地方調(diào)用靜態(tài)方法讀取appsettings.json
services.AddSingleton(new Appsettings(Env.ContentRootPath));
services.AddControllers();
#region Swagger
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo
{
Version = "v0.1.0",
Title = "Blog.Core API",
Description = "API文檔",
TermsOfService = new Uri("http://www.itdecent.cn/u/1117a3ecacbc"),
Contact = new OpenApiContact { Name = "Blog.Core", Email = "Blog.Core@xxx.com", Url = new Uri("http://www.itdecent.cn/u/1117a3ecacbc") }
});
var basePath = AppContext.BaseDirectory;
var xmlPath = Path.Combine(basePath, "NetCore.Blogs.Demo.xml");//這個就是剛剛配置的xml文件名
c.IncludeXmlComments(xmlPath, true);
#region Token綁定到ConfigureServices(以下都是新添加的代碼)
//開啟加權(quán)小鎖
c.OperationFilter<AddResponseHeadersFilter>();
c.OperationFilter<AppendAuthorizeToSummaryOperationFilter>();
//在Header中添加Token
c.OperationFilter<SecurityRequirementsOperationFilter>();
//必須是oauth2
c.AddSecurityDefinition("oauth2", new OpenApiSecurityScheme
{
Description = "JWT授權(quán)(數(shù)據(jù)將在請求頭中進(jìn)行傳輸) 直接在下框中輸入Bearer {token}(注意兩者之間是一個空格)\"",
Name = "Authorization",//jwt默認(rèn)的參數(shù)名稱
In = ParameterLocation.Header,//jwt默認(rèn)存放Authorization信息的位置(請求頭中)
Type = SecuritySchemeType.ApiKey
});
#endregion
});
#endregion
#region Jwt注冊
//獲取在配置文件中獲取Jwt屬性設(shè)置
services.AddAuthorizationSetup();
#endregion
}
三. 運(yùn)行
-
運(yùn)行結(jié)果如下 當(dāng)我們直接進(jìn)行請求需要授權(quán)接口時,接口請求失敗,提示401,如下
401 - 那么要怎么樣才能請求驗證成功呢
1. 獲取Jwt Token
-
在Login界面中請求獲取Token
獲取Token
2. 添加Token到請求頭
- 點(diǎn)擊
Authorize
Authorize - 在
Value中輸入Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dzLzIwMDgvMDYvaWRlbnRpdHkvY2xhaW1zL3JvbGUiOiJhZG1pbiIsIk5hbWUiOiLmiJHlj6tUdXNlciIsIkFnZSI6IjE4IiwiZXhwIjoxNTg1ODE0NTYwLCJpc3MiOiJ6eWtub3ciLCJhdWQiOiJhdWRpZW5jZSJ9.Ihy51p6VB6Ve_k_stqDQd6Fsi4H8Z9p05ThYMurswHU
Bearer后面跟剛才去Login控制器獲取的Token。 - 輸入完成后點(diǎn)擊頁面下的
Authorize就行了。
3. 再次請求受保護(hù)的方法
可以看到請求成功了!是不是很簡單呢

請求成功
四. 源碼
拉取后記得切換成Jwt+Swagger分支


