日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

webapi随机调用_BeetleX之webapi验证插件JWT集成

發(fā)布時(shí)間:2025/3/11 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 webapi随机调用_BeetleX之webapi验证插件JWT集成 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

????????對(duì)于webapi服務(wù)應(yīng)用很多時(shí)候需要制訂訪問(wèn)限制,在前面的章節(jié)也講述了組件如何制訂控制器訪問(wèn)控制;但到了實(shí)際應(yīng)用要自己去編寫還是比較麻煩。為了讓訪問(wèn)控制更方便組件實(shí)現(xiàn)基于JWT的控制器訪問(wèn)控制組件BeetleX.FastHttpApi.Jwt;通過(guò)這個(gè)組件可以輕易地集成訪問(wèn)控制功能。

配置

????????先需要引用BeetleX.FastHttpApi.Jwt擴(kuò)展組件,然后針對(duì)HttpApiServer調(diào)用UseJWT擴(kuò)展方法即可。

static void Main(string[] args) { HttpApiServer server = new HttpApiServer(); server.Register(typeof(Program).Assembly); server.Options.Port = 80; server.Options.LogLevel = EventArgs.LogType.Info; server.Options.LogToConsole = true; server.Options.SSL = true; server.Options.CertificateFile = "ssl.pfx"; server.Options.CertificatePassword = "123456"; server.UseJWT(); server.Open(); System.Threading.Thread.Sleep(-1); }

當(dāng)配置了JWT訪問(wèn)控制后,所有請(qǐng)求的api都會(huì)返回401錯(cuò)誤

使用

????????組件提供了AuthMark用于標(biāo)記控制器的針對(duì)JWT的驗(yàn)證情況,默認(rèn)不標(biāo)記的方法請(qǐng)求時(shí)都必須在Cookie:__beetlex_token或Header:Authorization中提供合法的JWT憑證信息。如果想某個(gè)方法不參與驗(yàn)證可以標(biāo)記上[AuthMark(AuthMarkType.NoValidation)]。

[Controller]class Webapi{ [AuthMark(AuthMarkType.Admin)] public object ListEmployee(string jwt_user, string jwt_role, IHttpContext context) { context.Server.Log(EventArgs.LogType.Warring, context.Session, $"{jwt_user}[{jwt_role}]"); return Northwind.Data.DataHelper.Defalut.Employees; } public object List(string jwt_user, string jwt_role, IHttpContext context) { context.Server.Log(EventArgs.LogType.Warring, context.Session, $"{jwt_user}[{jwt_role}]"); return Northwind.Data.DataHelper.Defalut.Customers; } [AuthMark(AuthMarkType.NoValidation)] public string Login(string name, string pwd, IHttpContext context) { string result; if (name == "admin") { result = context.SetAdminJwtToken(name); } else { result = context.SetJwtToken(name, "user"); } return result; }}

以上控制器有三個(gè)方法

  • Login

    該方法是把登陸信息寫入Cookie并返回,此方法標(biāo)記了?[AuthMark(AuthMarkType.Admin)],因此無(wú)須提供JWT憑證即可訪問(wèn)。

  • ListEmployee

    該方法需要憑證訪問(wèn),并明確憑證中的角色是admin.

  • List

????????該方法需要提供憑證訪問(wèn)

在訪問(wèn)的時(shí)候需可以通過(guò)訪問(wèn)Login來(lái)獲取憑證,如果是網(wǎng)頁(yè)請(qǐng)求則無(wú)須返回,SetJwtToken方法會(huì)把憑證寫到Cookie中,接下來(lái)的請(qǐng)求會(huì)通過(guò)Cookie傳遞到服務(wù)處理。如果是其他途徑訪問(wèn),則需要把憑證設(shè)置到Header部的Authorization中;不管是那種方式提供憑證組件都能兼容處理。

????????當(dāng)憑證有效的情況,組件會(huì)把jwt_user和jwt_role注入到數(shù)據(jù)上下文中,這兩個(gè)信息分別是JWT憑證中用戶和角色;如果有需要直接在參數(shù)中定義相關(guān)變量名稱即可獲取。

Postman調(diào)用測(cè)試

  • 獲取憑證

調(diào)用方法返回了憑證信息.接下來(lái)通過(guò)該憑證再調(diào)用List方法
  • 調(diào)用List

由于服務(wù)端輸出了Cookie,Postman也記錄下來(lái),所以接下來(lái)的請(qǐng)求是有效通過(guò)的。但之前登陸的并不是admin用戶,在這個(gè)cookie請(qǐng)求是無(wú)法訪問(wèn)ListEmployee的。

由于角色不是admin,因此訪問(wèn)ListEmployee會(huì)返回401錯(cuò)誤。接下來(lái)使用admin用戶登陸一次就可以正常訪問(wèn)ListEmployee方法了.

修改配置????????使用插件后會(huì)在程序中生成beetlex_jwtconfig.json文件{ "Issuer": null, "Audience": null, "JWTKeyED": "m60IIS4+DQR8K9eh0gjrlJPFvB042RyGhtS2jOHjSzyx4T7dZVBCAm51k9+fTEC1Ux066AH198KQgZpZh4Ejmd+a7/DKDi9Dg7quwkU85jmUADnEqGM7vOl8TOO16HrtUfoABVxQ60Tt92RGRjV8VJthxYdIX/B7XjMGTsJLjpo="}以上信息在初始化的時(shí)候隨機(jī)生成,可以根據(jù)自己需求進(jìn)行更改。下載示例

鏈接:https://pan.baidu.com/s/1ZP600HkfBc57O0gtv7npVA

提取碼:3oik

【BeetleX通訊框架代碼詳解】

BeetleX

開(kāi)源跨平臺(tái)通訊框架(支持TLS)
輕松實(shí)現(xiàn)高性能:tcp、http、websocket、redis、rpc和網(wǎng)關(guān)等服務(wù)應(yīng)用

https://beetlex.io

如果你想了解某方面的知識(shí)或文章可以把想法發(fā)送到

henryfan@msn.com|admin@beetlex.io

總結(jié)

以上是生活随笔為你收集整理的webapi随机调用_BeetleX之webapi验证插件JWT集成的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。