zoukankan      html  css  js  c++  java
  • ABP框架 配置权限、本地语言文件、左侧菜单项

    1.Framework.Core》Authorization》PermissionNames.cs 这里新增权限项

    namespace Framework.Authorization
    {
        public static class PermissionNames
        {
            public const string Pages_Tenants = "Pages.Tenants";
            public const string Pages_Users = "Pages.Users";
            public const string Pages_Roles = "Pages.Roles";
    
            /// <summary>
            /// 产品-浏览
            /// </summary>
            public const string Pages_Products = "Pages.Products";
            /// <summary>
            /// 产品-编辑
            /// </summary>
            public const string Pages_Products_Edit = "Pages.Products.Edit";
            /// <summary>
            /// 产品-删除
            /// </summary>
            public const string Pages_Products_Delete = "Pages.Products.Delete";
        }
    }

    2.Framework.Core》Authorization》FrameworkAuthorizationProvider.cs 这里创建权限,这样在页面中添加角色的时候才能显示出来

    using Abp.Authorization;
    using Abp.Localization;
    using Abp.MultiTenancy;
    
    namespace Framework.Authorization
    {
        public class FrameworkAuthorizationProvider : AuthorizationProvider
        {
            public override void SetPermissions(IPermissionDefinitionContext context)
            {
                context.CreatePermission(PermissionNames.Pages_Users, L("Users"));
                context.CreatePermission(PermissionNames.Pages_Roles, L("Roles"));
                context.CreatePermission(PermissionNames.Pages_Tenants, L("Tenants"), multiTenancySides: MultiTenancySides.Host);
    
                #region 创建权限
                var per = context.CreatePermission(PermissionNames.Pages_Products, L("Products"));
                per.CreateChildPermission(PermissionNames.Pages_Products_Edit, L("EditProducts"));
                per.CreateChildPermission(PermissionNames.Pages_Products_Delete, L("DeleteProducts"));
                #endregion
    
            }
    
            private static ILocalizableString L(string name)
            {
                return new LocalizableString(name, FrameworkConsts.LocalizationSourceName);
            }
        }
    }

    3.其中 Products、EditProducts、DeleteProducts 需要配置本地语言包文件:Framework.Core》Localization》Source》Framework-zh-CN.xml 这是中文的。

            <!-- 自定义 -->
            <text name="Roles" value="角色" />
            <text name="Products" value="商品" />
            <text name="EditProducts" value="编辑商品" />
            <text name="DeleteProducts" value="删除商品" />    

    4.左侧菜单 Framework.Web》App_Start》FrameworkNavigationProvider.cs

    requiresAuthentication: true 需要登录;requiredPermissionName: PermissionNames.Pages_Products 需要权限

    注册菜单在:Framework.Web》App_Start》FrameworkWebModule.cs 的 public override void PreInitialize(){...}里

    5.配置Action需要授权,在Action上面加上特性:[AbpAuthorize(PermissionNames.Pages_Products_Delete)]
    或者在Action里使用 PermissionChecker,
    PermissionChecker.IsGranted(PermissionNames.Pages_Products_Delete) 返回true或者false,
    PermissionChecker.Authorize(PermissionNames.Pages_Products_Delete) 如果没有授权,会抛出异常。
    AbpMvcAuthorize

    哈哈哈哈,啊哈哈哈哈,我看到了成功的曙光!

    参考:https://www.cnblogs.com/defzhu/p/4843292.html

    https://www.cnblogs.com/kid1412/p/6006297.html

    https://www.cnblogs.com/wendj/p/6812942.html

  • 相关阅读:
    关于公司电脑修改host文件无法生效的问题
    Cannot access nexus-aliyun (http://maven.aliyun.com/nexus/content/groups/public) in offline mode and the artifact org.springframework
    DCL-单例模式的线程安全
    关于volatile
    关于CAS中的ABA问题存在的隐患
    无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend),是否有其他进程正占用它
    vue整合笔记
    vue9-axios、细节和杂项
    vue8-vuex、路径配置别名、promise
    vue07-路由 vue-router、keep-alive、tab-bar
  • 原文地址:https://www.cnblogs.com/xsj1989/p/9887941.html
Copyright © 2011-2022 走看看