abp vnext 開發快速入門 3 實現許可權控制
阿新 • • 發佈:2020-07-15
上篇講了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是否已經提供相關的方法。