以下紀錄一個 ASP.Net 4.8 WebApi,搭配 Swagger, Jwt 的基本專案。
先附上github連結: https://github.com/mike-hsieh-tw/BaseWebApi4.8
IDE: VS2022
Step1: 使用vs2022選擇ASP.NET Web應用程式
圖-api01
圖-api02
圖-api03
Step2: 安裝套件
到 nuget 中查詢以下套件並照以下順序安裝,安裝時注意一下版本,基本上都可以適用 4.8。
// Jwt相關套件
System.IdentityModel.Tokens.Jwt
Microsoft.Owin.Security.Jwt
Microsoft.AspNet.WebApi.Owin
Microsoft.Owin.Host.SystemWeb
// Swagger相關套件
Swashbuckle
Step3: Web.Config檔案中加入Key
<add key="JwtKey" value="23GadUCymdzSR6PY6SjLTpDWNS6snwZNrEvdCwfq" />
<add key="JwtIssuer" value="http://localhost/" />
圖-api04
Step4: 加入Owin的啟動類。並加入以下程式碼。
圖-api05
上面還要引入 using Microsoft.Owin.Security;
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.UseJwtBearerAuthentication(
new JwtBearerAuthenticationOptions
{
AuthenticationMode = AuthenticationMode.Active,
TokenValidationParameters = new TokenValidationParameters()
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateIssuerSigningKey = true,
ValidIssuer = ConfigurationManager.AppSettings["JwtIssuer"], //some string, normally web url,
ValidAudience = ConfigurationManager.AppSettings["JwtIssuer"],
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(ConfigurationManager.AppSettings["JwtKey"]))
}
});
}
}
Step5: 在WebApiConfig中加入Jwt相關服務。
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
圖-api06
Step6: Controllers 中加入 UserController
//該部分請詳見github的檔案
Step7: 擴充Extensions資料夾和檔案
//該部分請詳見github的檔案
Step8: 有增加IP過濾器 和 Token延展器
//該部分請詳見github的檔案
參考資料: