abp vnext 開發快速入門 3 實現權限控制


上篇講了abp vnext 實現了簡單的增加操作的例子。刪除更新查詢基本類似,這里就不講了,接下來說下如何實現角色權限控制。

再說之前,先說下如果想更加透徹的理解abp vnext的權限控制,最好是先要了解IdentityServer4 和 asp.net core 基於策略的授權。如果你說我不想要去了解那么多。我就想快點能實現功能,那么就往下看吧。

我這里主要說的是權限相關的控制,其實abp實現權限控制就是把設置好的一個個權限當成了一個個的策略,這里講如何去實現。

首先,先去設置需要加的權限,拿上篇的創建類別這個操作來說。先到Application.Contracts層找到PermissionDefinitionProvider 這個類,在里邊加入以下代碼:

 var categoryManagement = myGroup.AddPermission("Category_Management");
 categoryManagement.AddChild("Category_Management_Create");

  

然后在Application層下的CategoryAppService里找到之前創建的CreateAsync 方法,加上這個屬性

[Authorize("Category_Management_Create")],如下

        /// <summary>
        /// 創建類別
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [Authorize("Category_Management_Create")]
        public async Task<ApiResponse> CreateAsync(CreateCategoryDto input)
        {
            var category = ObjectMapper.Map<CreateCategoryDto, Category>(input);

            var categoryAdd = await _categoryRepository.InsertAsync(category);

            return new ApiResponse("創建成功", ObjectMapper.Map<Category, CategoryDto>(categoryAdd),SoftwarePortalErrorCodes.Success);
        }

  

這樣其實就基本快要完成了,因為在宿主服務里配置了授權認證服務器如下:

"AuthServer": {
    "Authority": "https://localhost:123456/",
    "ClientId": "Test_Web",
    "ClientSecret": "12121212*"
  }

  

這樣之前通過登錄獲取到的JWTToken過來后會自動用授權認證服務器接口進行驗證,驗證通過則通過。不過在這之前,還少一個東西。就是剛剛設置的權限(Category_Management_Create),要加到授權認證服務器的數據庫(IdentifyServer4數據庫)里,不然驗證是通過不了的,這個權限可以通過宿主服務的編譯,發布,自動更新到IdentifyServer4數據庫。

這樣就實現了基本的權限校驗。其余的細節就是在后台進行權限的角色相關的設置,這塊我目前想到的可以用授權服務器提供的接口在后台進行設置,但是不知道abp vnext是否已經提供相關的方法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM