如何實現微信小程序與.net core應用服務端的(de)無狀态身份驗證
發表時(shí)間:2022-9-14
發布人(rén):融晨科技
浏覽次數:119
随着.net core2的(de)發布,越來(lái)越多人(rén)使用.net core2開發各種應用服務端,下面我就(jiù)結合自己最近開發的(de)一款小程序,給大(dà)家分享下,怎麽使用小程序登錄後,小程序與服務端交互的(de)權限控制。
.net core 服務端的(de)登錄設計如下:
net core 服務端,我們使用 JWT 搭建分布式無狀态身份驗證系統
1.首先在(zài)startup.cs中 ConfigureServices(IServiceCollection services) 中添加如下代碼
上(shàng)述代碼中有一個(gè) 自定的(de) WabApiAuthroizeAttribute,具體實現代碼如下:
2.在(zài) Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)中添加
3.我們要(yào / yāo)創建三個(gè)關于(yú)JWT的(de)類
TokenEntity實體類,用來(lái)生成token實體,裏面大(dà)家可在(zài)添加屬性
token提供屬性
裏面有一些登錄相關代碼,大(dà)家可結合自己的(de)程序進行修改
這(zhè)樣我們就(jiù)完成了(le/liǎo) JWT的(de)三個(gè)相關類的(de)設計。
以(yǐ)下就(jiù)是(shì)我們的(de)具體登錄驗證:
添加一個(gè)登錄webapi
登錄後返回一個(gè) token實例,裏面将包含我們之(zhī)前創建的(de)各個(gè)屬性,重點是(shì)access_token
返回的(de)access_token,将在(zài)微信小程序中提交時(shí)附上(shàng),就(jiù)可實現無狀态身份驗證。
那個(gè)其他(tā)webapi如何判斷身份驗證呢?很簡單,隻要(yào / yāo)在(zài)每個(gè)webapi的(de)類或屬性上(shàng)添加此屬性即可,超級簡單吧。
[WebApiAuthorize]
比如我們有一個(gè)獲取小程序首頁滾動圖片鏈接的(de)action:
如此這(zhè)般即可
下面我們将講講,小程序如何登錄,如何身份認證
首先小程序端的(de)登錄設計如下:
小程序登錄界面
上(shàng)面我們暫且不(bù)講,使用微信登錄的(de)事,隻講小程序如何使用我們應用的(de)賬号密碼進行登錄:
小程序登錄代碼如下:
在(zài)小程序中,我們首先對小程序的(de)網絡請求wx.request進行封裝
那使用此類進行登錄後,我們可以(yǐ)獲得返回的(de)access_token,并将access_token保存起來(lái),下次,請求其他(tā)動作時(shí),将會自動在(zài)網絡頭header 附上(shàng)token,就(jiù)可使用身份驗證,非常簡單。
以(yǐ)上(shàng)就(jiù)是(shì)我所做的(de)一個(gè)實例,因爲(wéi / wèi)代碼較多,有時(shí)沒有寫的(de)很具體,如果大(dà)家還疑問,可以(yǐ)直接咨詢我。