基於ABP框架的權限設置


需求:在界面展示中,“定向包管理”,"競價管理",“競拍管理”,"發布定向資源","添加競價資源","添加競價資源",根據當前用戶登錄賬號判斷是否分配了相應權限而展示。

如圖:

 

如下圖:在現有的“定向包管理”,"競價管理",“競拍管理” 的權限下 一次新增 "發布定向資源","添加競價資源","添加競價資源"三個權限

 

 新增擴展權限:

 

 

1:首先定義權限變量字段

2:權限配置

    /// <summary>
    /// 權限配置都在這里。
    /// 給權限默認設置服務
    /// See <see cref="ResourceAppPermissions"/> for all permission names.
    /// </summary>
    public class ResourceAppAuthorizationProvider : AuthorizationProvider
    {
        public override void SetPermissions(IPermissionDefinitionContext context)
        {
            //在這里配置了Resource 的權限。

            var pages = context.GetPermissionOrNull(AppPermissions.Pages) ?? context.CreatePermission(AppPermissions.Pages, L("Pages"));

            var entityNameModel = pages.Children.FirstOrDefault(p => p.Name == AppPermissions.Pages_ResourceManagement)
              ?? pages.CreateChildPermission(AppPermissions.Pages_ResourceManagement, L("ResourceManagement"));
             // 資源管理
            var resource = entityNameModel.CreateChildPermission(ResourceAppPermissions.Resource, L("Resource"));
            resource.CreateChildPermission(ResourceAppPermissions.Resource_CreateResource, L("CreateResource"));
            resource.CreateChildPermission(ResourceAppPermissions.Resource_EditResource, L("EditResource"));
            resource.CreateChildPermission(ResourceAppPermissions.Resource_DeleteResource, L("DeleteResource"));

            // 競價管理
            var bidResource = resource.CreateChildPermission(ResourceAppPermissions.Resource_Bidding,
                L("Resource_Bidding"));
            // 添加競價資源
            bidResource.CreateChildPermission(ResourceAppPermissions.Resource_AddBidding, L("Resource_AddBidding"));
            // 競拍管理
            var aucResource = resource.CreateChildPermission(ResourceAppPermissions.Resource_Auction, L("Resource_Auction"));
            // 添加競拍資源
            aucResource.CreateChildPermission(ResourceAppPermissions.Resource_AddAuction, L("Resource_AddAuction"));
            // 定向包管理
            var DirResource = resource.CreateChildPermission(ResourceAppPermissions.Resource_Directional, L("Resource_Directional"));
            // 發布定向資源
            DirResource.CreateChildPermission(ResourceAppPermissions.Resource_AddDirectional, L("Resource_AddDirectional"));

         }

        private static ILocalizableString L(string name)
        {
            return new LocalizableString(name, MaterialCirculationConsts.LocalizationSourceName);
        }
    }

3:在JS中注入權限

      // 頁面權限
        var _permissions = {
            // 資源列表權限
            create: abp.auth.hasPermission("Pages.Resource.CreateResource"),
            edit: abp.auth.hasPermission("Pages.Resource.EditResource"),
            'delete': abp.auth.hasPermission("Pages.Resource.DeleteResource"),
            // 頁面tab顯示權限
            bidding: abp.auth.hasPermission("Pages.Resource.Bidding"),
            directional: abp.auth.hasPermission("Pages.Resource.Directional"),
            auction: abp.auth.hasPermission("Pages.Resource.Auction"),
            // 添加資源類型權限
            addBidding: abp.auth.hasPermission("Pages.Resource.AddBidding"),
            addDirectional: abp.auth.hasPermission("Pages.Resource.AddDirectional"),
            addAuction: abp.auth.hasPermission("Pages.Resource.AddAuction")

        };

4:前端Razor語法判斷

   <div class="dropdown-menu pull-right">
                @if (IsGranted(ResourceAppPermissions.Resource_AddBidding))
                {    <li>
                    <a href="/Mpa/ResourceManage/CreateOrEditResourceModal?type=0"> 添加競價資源</a>
                </li>
                }

                @if (IsGranted(ResourceAppPermissions.Resource_AddAuction))
                { <li>
                    <a href="/Mpa/ResourceManage/CreateOrEditResourceModal?type=1">添加競拍資源 </a>
                </li>
                }

                @if (IsGranted(ResourceAppPermissions.Resource_AddDirectional))
                {    <li>
                    <a href="/Mpa/ResourceManage/CreateOrEditResourceModal?type=2">發布定向資源</a>
                </li>
                }
            </div>

  <div id="SettingsTabPanel" class="tabbable-line">
            <ul id="uResourcesType" class="nav nav-tabs ">
                @if (IsGranted(ResourceAppPermissions.Resource))
                {

                    <li class="active">
                        <a href="#CachesTab" data-toggle="tab" aria-expanded="false">
                            資源信息
                        </a>
                    </li>

                }
                @if (IsGranted(ResourceAppPermissions.Resource_Auction))
                {
                    <li class="">
                        <a href="#biddingTab" value="Auction" data-toggle="tab" aria-expanded="true">
                            競拍管理
                        </a>
                    </li>
                }


                @if (IsGranted(ResourceAppPermissions.Resource_Bidding))
                {
                    <li class="">
                        <a href="#DarkPatTab" value="Bidding" data-toggle="tab" aria-expanded="true">
                            競價管理
                        </a>
                    </li>
                }

 

                @if (IsGranted(ResourceAppPermissions.Resource_Directional))
                {

                    <li class="">
                        <a href="#OrientationPackageTab" value="Orientation" data-toggle="tab" aria-expanded="true">
                            定向包管理
                        </a>
                    </li>

                }

            </ul>

            <div class="tab-content">
                <div class="tab-pane active" id="CachesTab">
                    <div id="ResourcesTable"></div>
                </div>
                <div class="tab-pane" id="biddingTab">
                    <div id="biddingResourcesTable"></div>
                </div>
                <div class="tab-pane" id="DarkPatTab">
                    <div id="DarkPatTable"></div>
                </div>
                <div class="tab-pane" id="OrientationPackageTab">
                    <div id="OrientationPackageTable"></div>
                </div>
            </div>
        </div>

 


免責聲明!

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



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