zoukankan      html  css  js  c++  java
  • abp vnext 开发快速入门 3 实现权限控制

    上篇讲了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是否已经提供相关的方法。

  • 相关阅读:
    多线程编程核心技术(五)死锁
    SELinux详细配置
    Linux实现RAID
    iSCSi的基本配置
    文本超出省略号之前后省略号实现
    对象冻结
    条件判断的优美写法
    使用VConsole
    重绘和重排(回流)
    移动端rem布局
  • 原文地址:https://www.cnblogs.com/wcoolly/p/13307944.html
Copyright © 2011-2022 走看看