天天看點

初識ABP vNext(3):vue對接ABP基本思路

Tips:本篇已加入系列文章閱讀目錄,可點選檢視更多相關文章。

目錄

  • 前言
  • 開始
    • ABP
    • vue-element-admin
    • 登入
    • 權限
    • 本地化
    • 建立項目
  • 最後

上一篇介紹了ABP的啟動模闆以及AbpHelper工具的基本使用,這一篇将進入項目實戰部分。因為目前ABP的官方模闆隻支援MVC和Angular,MVC的話咱.NET開發人員來寫還可以,專業前端估計很少會用這個。。。Angular我本人不熟,是以選擇vue來做UI。

我使用vue-element-admin來作為模闆,這個項目貌似很多人用,選擇他的i18n分支,因為我需要國際化功能。在開始編碼前,需要先分析幾個重要問題:

  • 使用者登入/token
  • 使用者權限控制
  • 應用程式本地化/語言切換

好在ABP模闆提供了Angular版本,我們可以參考Angular版本來做。

因為ABP的授權子產品是使用IdentityServer4,是以IdentityServer4的一些預設端點在ABP裡也是同樣有效的,可以參考下IdentityServer4官網。運作ABP模闆項目,看一下IdentityServer4發現文檔,uri是:/.well-known/openid-configuration

初識ABP vNext(3):vue對接ABP基本思路

可以看到token端點是/connect/token,這是IdentityServer4預設的,通過這個端點就可以登入使用者擷取token。後面請求接口時,把token放到HTTP Header的authorization字段即可。

進入ABP的/swagger界面:

初識ABP vNext(3):vue對接ABP基本思路

ABP内置了一個/api/abp/application-configuration接口,它用于傳回本地化文本,權限和一些系統設定資訊。看一下資料格式:

初識ABP vNext(3):vue對接ABP基本思路

在auth.policies字段中包含了系統的所有權限,auth.grantedPolicies字段則包含了目前使用者所擁有的權限,因為我現在沒登入是以是空的。通過這兩個字段就可以和vue-element-admin的菜單權限對應起來,實作權限控制。

初識ABP vNext(3):vue對接ABP基本思路

currentUser字段表示目前使用者資訊,沒登入時就是空的,isAuthenticated為false,這個字段也可以作為使用者是否登入(token是否有效)的判斷依據。

本地化對于大部分的小型系統可能都用不上,不過ABP作為一個優秀且全面的架構,必然會支援本地化功能。同樣的,本地化資訊也可以通過/api/abp/application-configuration接口來擷取:

初識ABP vNext(3):vue對接ABP基本思路

localization.languages字段表示系統所支援的語言類型,前端的語言切換選項就可以使用這個字段。

初識ABP vNext(3):vue對接ABP基本思路

localization.values字段就是本地化的文本資訊了,你在後端配置的本地化文本都可以從這裡擷取到,通過這個字段結合vue-element-admin的國際化功能,就可以讓你的系統支援多語言。vue-element-admin的國際化方案是通過 vue-i18n來實作,你也可以直接在前端部分來做國際化,如果你隻有一個前端應用的話,但是在後端做複用性更好一些。