1. 程式人生 > 實用技巧 >abp vnext 開發快速入門 3 實現許可權控制

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資料庫)裡,不然驗證是通過不了的。

這樣就實現了基本的許可權校驗。其餘的細節就是在後臺進行許可權的角色相關的設定,這塊我目前想到的可以用授權伺服器提供的介面在後臺進行設定,但是不知道abp vnext是否已經提供相關的方法。