ABP vNext微服务架构详细教程——身份管理服务
1
框架搭建
ABP vNext創(chuàng)建包含app和module兩種模板,其中app方式所創(chuàng)建的模板包含用戶、角色、權(quán)限管理,ABP基礎(chǔ)配置IdentityServer的基礎(chǔ)配置數(shù)據(jù)等功能。module模式是一個比較干凈的服務(wù),里面不包含默認(rèn)業(yè)務(wù)功能。
ABP vNext創(chuàng)建包含app和module兩種模板,其中app方式所創(chuàng)建的模板包含用戶、角色、權(quán)限管理,ABP基礎(chǔ)配置IdentityServer的基礎(chǔ)配置數(shù)據(jù)等功能。module模式是一個比較干凈的服務(wù),里面不包含默認(rèn)業(yè)務(wù)功能。
這里我們構(gòu)建身份管理服務(wù),需要用到ABP vNext框架自帶的用戶角色管理模塊,所以采用app模式構(gòu)建項目源碼。項目名稱為Demo.IdentityManager,構(gòu)建命令如下:
abp new Demo.Identity -t app --ui none --separate-identity-server -dbms MySQL這里?
?-t app 表示application模式?,
--ui none 表示不使用UI界面,?
--separate-identity-server 表示將身份認(rèn)證服務(wù)IdentityServer和當(dāng)前項目服務(wù)分開,?
-dbms MySQL 表示使用MySQL數(shù)據(jù)庫。
執(zhí)行命令后,執(zhí)行目錄中會出現(xiàn)aspnet-core文件夾,將該文件夾中所有內(nèi)容拷貝至項目解決方案的service/identitymanager目錄下,將其中的IdentityServer項目移動至identityserver文件夾下,若直接添加IdentityServer項目到解決方案會報錯找不到common.props,這是因為相對路徑發(fā)生變化,可將identitymanager目錄下的common.props文件復(fù)制一份到總解決方案sln所在目錄
目錄調(diào)整完成后,使用sln構(gòu)建工具添加所有項目到總解決方案。添加后項目結(jié)構(gòu)如下圖:
因為IdentityServer項目相對路徑發(fā)生變化,需刪除并重新添加該項目對EntityFrameworkCore項目的引用。
如果不想使用ABP自帶的單元測試可以將解決方案文件夾test及其下項目刪除。
2
初始化數(shù)據(jù)庫
在ABP vNext框架application模式代碼創(chuàng)建的數(shù)據(jù)庫中,會包含用戶、角色、權(quán)限、配置等功能的表,以及IdentityServer框架各項數(shù)據(jù)庫持久化數(shù)據(jù)的表。
application模式下所創(chuàng)建的項目中的DbMigrator項目包含創(chuàng)建、執(zhí)行數(shù)據(jù)遷移并初始化數(shù)據(jù)的功能。
正常情況下我們修改DbMigrator項目的配置文件appsettings.json中的ConnectionStrings:Default字段改為我們所使用的數(shù)據(jù)庫并執(zhí)行該項目,即可創(chuàng)建所需要的數(shù)據(jù)庫
但我當(dāng)前所用版本6.0.1有一個小Bug,運(yùn)行DbMigrator項目會卡在創(chuàng)建數(shù)據(jù)遷移這一步,需要我們修改數(shù)據(jù)庫鏈接字符串后手動創(chuàng)建數(shù)據(jù)遷移并執(zhí)行,使用dotnet-ef命令執(zhí)行如下:
在EntityFramework項目目錄下進(jìn)入cmd命令行
確保dotnet-ef命令已安裝并更新至最新版本,具體可參考:https://docs.microsoft.com/zh-cn/ef/core/get-started/overview/install
添加數(shù)據(jù)遷移
dotnet-ef migrations add InitDb執(zhí)行數(shù)據(jù)遷移
dotnet-ef database update -s ..\Demo.Identity.DbMigrator執(zhí)行完成后,數(shù)據(jù)庫已創(chuàng)建成功,運(yùn)行DbMigrator項目可完成數(shù)據(jù)初始化。
3
調(diào)整及測試
身份管理服務(wù)運(yùn)行項目為Identity.HttpApi.Host,將此項目設(shè)置為啟動項。
修改Identity.HttpApi.Host項目中的配置文件appsettings.json,修改數(shù)據(jù)庫鏈接字符串:ConnectionStrings:Default,及Redis地址Redis:Configuration,按照服務(wù)規(guī)劃我們給該服務(wù)設(shè)置的規(guī)劃的端口號為5000,所以在appsettings.json中添加配置項:?
"urls":?"http://*:5000"
默認(rèn)情況下,ABP vNext框架自帶的用戶角色權(quán)限等接口需要授權(quán)用戶才可以訪問,依據(jù)我們之前的設(shè)計,微服務(wù)中的各項服務(wù)不需要二次權(quán)限驗證,這里我們?nèi)趾雎詸?quán)限驗證,否則調(diào)用時會報401錯誤。忽略方法為在IdentityHttpApiHostModule的ConfigureServices方法中添加以下內(nèi)容:
context.Services.AddAlwaysAllowAuthorization();以控制臺方式啟動項目Identity.HttpApi.Host項目,啟動完成后通過瀏覽器訪問http://localhost:5000/swagger/index.html,成功顯示Swagger頁面,測試/api/identity/users的Get方式接口,返回admin用戶信息,說明服務(wù)配置成功。
end
更多精彩
關(guān)注我獲得
總結(jié)
以上是生活随笔為你收集整理的ABP vNext微服务架构详细教程——身份管理服务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何实现二次抛异常时保存第一次异常的详细
- 下一篇: 微软开发者的年度回顾