嘗試新的開發組合:Asp.NET Core+ABP框架+IdentityServer4+MySQL+Ext JS

  1. 嘗試新的開發組合:Asp.NET Core+ABP框架+IdentityServer4+MySQL+Ext JS
  2. Asp.NET Core+ABP框架+IdentityServer4+MySQL+Ext JS之配置IdentityServer
  3. Asp.NET Core+ABP框架+IdentityServer4+MySQL+Ext JS之數據遷移

因爲早期一個項目的需要,開始研究Cas Server,這東西的原版是JAVA寫的,有一定的年頭了,要用起來還要自己進行修改。囿於自己JAVA方面的知識貧乏,對這東西沒太大興趣。後來,發現微軟出了個IdentityServer4,這東西不錯,修改起來也容易,合自己胃口,於是就一直關注着這東西。

要使用IdentityServer4,一個關鍵的地方是如何控制用戶的權限,在文檔中,使用IdentityServer4控制權限主要有基於資源授權和基於策略授權兩種模式。這兩種模式,無論是那一種,都需要在服務器配置授權,而這對於一些企業應用程序來說,總感覺有點麻煩。其中的問題在於是否需要在認證服務器上實現一套權限系統,找了一些資料,都是建議不要這樣做的,如《Identity vs Permissions》這篇文章,筆者是比較贊同,但遺憾的是沒提供一個解決方案。

找了不少資料,但都沒找到好解決辦法。實現的主要的難點在於,用戶的註冊和登錄都是在認證服務器上實現的,在用戶註冊的時候,如何在WebApi或MVC這端創建一個用戶信息呢?實現方法的可以是用戶註冊後,服務器跳轉或調用WebApi或MVC這邊的一個接口,用於創建初始權限,也可以在需要訪問權限,找不到用戶信息的時候再創建,那麼,那種方式更可行呢?對這個毫無頭緒,打算自己做一下試驗,看看情況如何再選擇。後來找到ABP框架,居然支持IdentityServer4,而且還包含了不少其他開發所需的功能,於是嘗試了一下,感覺還不錯,於是就有了嘗試一下Asp.NET Core、ABP框架、IdentityServer4、MySQL和Ext JS結合在一起的想法。既然是學習性質,乾脆就寫個系列文章,也是就有了本文。

在開始之前,我們需要注意的是,使用ABP框架來實現IdentityServer4會有一個很大很大的問題,就是IdentityServer4和資源系統所使用的數據庫是同一個數據庫,也就是說,IdentityServer4所使用的用戶表也是資源系統所使用的用戶表,只有一個用戶表,與預想中的認證系統擁有的自己的數據庫,而資源系統也擁有自己的數據庫會有很大的出入。筆者覺得這算是一種折衷方案吧,雖然可以將認證服務器和資源系統分離開來,但他們必須使用同一個用戶表來實現所需功能。這是好是壞?我感覺不算太好的方式,但如果不這樣,又回到了老路上了,還得繼續折騰,因而,只好折衷一下。

由於該系列文章是一次學習之旅,因而在這個過程箇中會有很多錯漏,請大家多多包含。本系列文章將使用筆者一書《Ext JS 6.2實戰的》中的SimpleCMS作爲客戶端程序,筆者也懶得重新寫一個了。雖然是使用原有的系統,但筆者也想嘗試一下,直接使用WebApi作爲客戶端程序的後臺接口,看看實現效果如何。

好了,現在開始進入實戰環節,先訪問https://aspnetboilerplate.com/Templates創建一個如下圖所示的應用程序模版:
創建項目
單擊“Create My Project!”按鈕等待以後就可以下載項目文件了。文件下載解壓縮後,先新建一個名爲SimpleCmsWidthAbp的文件夾,把解壓後的3.4.0\aspnet-core文件夾中的src文件夾、test文件夾和SimpleCmsWithAbp.sln文件夾複製到SimpleCmsWidthAbp文件夾內。文件複製後,利用Visual Studio 2017打開SimpleCmsWithAbp.sln文件,會看到如下圖所示的7個項目:
項目列表

第一個項目Application屬於應用層和領域層的混合項目,第二到第四個項目Core、EntityFrameworkCore和Migrator屬於基礎設施層的,一般不需要改動這兩個項目的內容。第四個項目Migrator是用於數據庫遷移的項目。第五個項目是Web的核心項目,屬於Web的基礎設施,具體算那層筆者也說不準。最後一個項目是展示層,由於Core版的框架將WebApi和MVC合二爲一了,因而不再需要MVC這一項目,直接在Web.Host中來實現了。文件夾test中的是測試項目。

今天就說到這裏了。

發佈了179 篇原創文章 · 獲贊 153 · 訪問量 176萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章