登錄設計,這個話題真的是可大可小,過往在Winner框架中 一直是 使用SSO 做登錄,之前也寫過基於Outh2.0做授權登錄,
但是現在我任職的這個家企業,雖然對於SSO也有需要,但是目前這一塊需求還是不那么強烈,各個系統之間都是獨立去管控的。
這讓6月份剛入職時候的我,上來就准備以SSO(單點登錄)的方式去處理,基於IdentityServer4 (以下簡稱Id4)完成了一個。
參考資料:
http://www.identityserver.com.cn/
http://www.tnblog.net/heart320/article/details/3046
https://www.cnblogs.com/stulzq/p/8119928.html
這個我就不多說了,關於這個的資料,網上實在太多了,最后項目發布的時候,后來公司只給我一個子域名的權限,這個當時就尷尬了。
這屬於 人為造成的問題,公司就一個域名,就分配一個二級域名給我,后來我想用端口的 方式去解決。最后還是放棄了。
所以放棄了 使用 SSO了。 這個事導致了 對Victory 從 “大框架” 直接 轉為"小框架"。
大框架就是 各個項目都是獨立系統比如: 權限系統,登錄中心,調度系統,日志系統。都是獨立站點,獨立部署,新項目上線只需要配置,然后調接口就行。
小框架則是,各個功能集成在一個站點里面: 登錄功能,權限功能,調度功能,日志功能。 新建一個項目,就直接附帶了這些功能,然后寫核心業務。
所以,直接這也取決於,我就做一個小項目,別一上來就部署五六個站點。這一點“工廠型企業” 和 “互聯網企業” 有很大區別。(不過后續在公司推廣 “大框架”概念,慢慢的公司的人也接受大框架的概念了)
從大框架 轉為了小框架, 導致了我對 前后端分離,都產生了猶豫,雖然我給Victory框架制定了這么一個發展路線。
1.x 前后端不分離,雖然使用Vue 但是更多的是做MVVM 數據綁定。主要技術選項: Core3.1 (mvc) + Sqlserver+ FreeSql + Bootstarp + Jquery + AdminLte + Vue
2.x 前后端分離,完全使用Vue,前端統一elemnet-ui,主要技術選項: Core3.1 (mvc) + Sqlserver+ FreeSql + Vue + vue-element-admin
至此,在登錄方式上,我們就產生了三種方式:
1,基於id4 ,做SSO授權中心, 這個估計公司認可我的思路之后,有機會做大框架架構的時候,才有機會實施。
2,基於 Authorize, 這個是Core過濾器 自帶這么一個 功能,直接用就好了。
3,基於Jwt , 做前后端分離以及客戶端進行對接的時候,等Victory 2.0 實施的時候 就可以用這種方式去實施。
今天重點講的還是 基於core 自帶的登錄功能,也是最簡單的一種,三步走:
step1:將身份認證中間件添加到容器中:
step2:制作一個登錄界面,登錄成功將信息寫入cookie:
step3: 在需要登錄之后才能訪問的頁面控制器上打上 過濾器標簽:
三步即可完成一個登錄了, 方便了很多,傳統的方式是 去寫一個session,然后每個控制用基類里面 添加 session判斷去處理驗證登錄。
這里就簡單的講了一下 如何用 Authorize 過濾器 去實現登錄功能,另外還列了一下 另外兩種,一個是大框架的 Id4,一個前后端分離的Jwt,
當然我這里這么分類 也不一定正確, Id4 也可以使用 jwt 做數據傳輸。 他們三種實現登錄的方式並不是 一個並列關系,硬要並列Jwt 應該是和Cokkie是一種並列關系。
所以這里我的Victory1.0 是使用 Authorize 基於Cookie 實現,等升級到2.0的時候 ,我會去基於Jwt 的格式去實現。