• 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

  • 相关阅读:
    shiro角色与权限
    shiro Realm体系
    shiro AuthenticationToken体系
    shiro身份认证流程
    git相关
    Logback 快速入门 / 使用详解
    SLF4J 快速入门 / 绑定原理
    Java 日志框架概述(slf4j / log4j / JUL / Common-logging(JCL) / logback)
    Java 浮点数精确性探讨(IEEE754 / double / float)与 BigDecimal 解决方案
    Maven 快速入门
  • 原文地址:https://www.cnblogs.com/xsj1989/p/9887941.html
Copyright © 2020-2023  润新知