1. 頁面,通過權限控制某個頁面是否能顯示
2. 按鈕,通過權限控制某個頁面上的按鈕是否能顯示
3. 方法,通過權限控制某個方法(Service方法或者Server方法)是否能顯示
4. 數據行,通過權限控制某個用戶只能看到某幾行數據
回答1:這個是屬於菜單權限,所有的菜單都可以進行配置維護,然后通過 bs 中的 Utilities.GetUserPermissionList(userInfo); 函數可以獲取當前用戶所有能訪問的菜單List。
回答2:每個按鈕都可以編上一個編號,然后在頁面上調用 this.IsAuthorized("Project.Edit") 這個函數獲取到當前用戶是否有這個操作權限。按后按自己的意願無效或者不顯示處理。
回答3:是否允許調用某個方法,可以參考問題2,每個服務都編上一個號碼,調用更底層一點兒封裝的函數就可以了,轉到定義就可以找到了,permissionService.IsAuthorizedByUser。
回答4:this.UserInfo.CompanyId, this.UserInfo.SubCompanyId, this.UserInfo.DepartmentId, this.UserInfo.WorkgroupId 類似函數可以獲得當前用戶的所在公司等信息,
然后結合當前用戶是否在哪個角色 BaseUserManager.IsInRoleByCode的函數
在結合業務數據庫里的公司部門字段,拼接where sql語句就可以了,幾乎常用的行權限問題全搞定了,例如下圖

