精华内容
下载资源
问答
  • 其中,还重点讲解了如何基于Shiro的资源授权实现员工-角色-操作权限、员工-角色-数据权限的管理;在课程的最后,还介绍了如何实现一键打包上传部署运行项目等等。如下图所示为本权限管理平台的数据库设计图: 以下为...
  • 通用数据权限的设计思路

    万次阅读 2020-01-02 09:25:30
    根据目前的调研情况,有两种数据级别权限设计思路,都可以实现对人员访问的数据权限控制,从而实现不同的人员能够看到不同的数据,例如经理能够看到其部门下所有人的数据,而单个的员工只能看到自己的数据。...

    接着上个襄阳项目的需要, 目前的项目情况是,一期已经把功能权限做完了,可以对不同用户的不同权限功能做到限制,现在需要做数据的权限,不同的用户看到不同的数据。

    根据目前的调研情况,有两种数据级别权限设计思路,都可以实现对人员访问的数据权限控制,从而实现不同的人员能够看到不同的数据,例如经理能够看到其部门下所有人的数据,而单个的员工只能看到自己的数据。用户拥有的权限越大,能看到的数据就越多。

    第一种是使用先在网关进行权限的判断,此用户有这个操作的权限,再进行查询,查询时根据参数进行SQL的拼接。网关鉴定是否能访问以及转发请求,对SQL的拼接和处理在各微服务自己内部进行,服务A/B/C都需要自己写需要查询的参数。如下图所示

    使用此方式存在一些弊端 ,使用SQL拼接的方式不利于统一管理权限,每个项目有自己的过滤方式,拼接SQL的方式,不利于统一管理,也不方便后期可能出现的规则修改,因为已经硬编码到代码中,需要各个服务自己修改一遍。

    优点很明显,足够很简单,只需要根据相应的规则调整SQL就可以了。

     

    第二种方式,专门抽离一个权限鉴定的服务,所有到达网关的请求后,网关去调用权限鉴定服务,进行访问的URL的权限判断,如果鉴定成功,则能够访问,网关转到请求到对应的服务,否则网关直接返回,提示用户没有权限访问。数据权限的控制依然需要各个微服务硬编码到各自的项目代码中去。如下图所示

     

    目前没有什么方式能做这种通用的数据级权限控制(因为涉及到各个服务的查询SQL进行过滤,拼接,在这个权限鉴定服务中没法实现这样的功能,对各种不同的查询的SQL进行拼接,过滤)。

     

    这种方式相对于第一种把对接口的访问权限校验抽离出来了,减轻了网关的压力,依然是各个服务自己实现数据查询的控制。

     

    现在的思路是: 

    新建一个mybatis的插件, 让各个服务都依赖这个(java项目可以继承, 其他的php得服务暂时不考虑), 这个插件的作用就是对

    SQL进行过滤, 拼接. 鉴权服务会对配置的数据的权限进行读取, 形成一个SQL, 以传递参数的形式, 返回给网关, 网关转发给其他的微服务, 服务获取到携带的SQL参数, 利用插件对SQL进行拼接, 过滤, 就可以查询出来数据了.进行数据的返回.

     

    下面是目前的一部分代码, 希望能够给各位一些启示:

    package co.filter;
    
    import lombok.extern.slf4j.Slf4j;
    import org.apache.ibatis.executor.Executor;
    import org.apache.ibatis.executor.statement.StatementHandler;
    import org.apache.ibatis.mapping.BoundSql;
    import org.apache.ibatis.mapping.MappedStatement;
    import org.apache.ibatis.plugin.*;
    import org.apache.ibatis.session.ResultHandler;
    import org.apache.ibatis.session.RowBounds;
    import org.springframework.stereotype.Component;
    
    import java.util.Properties;
    
    /**
     * @author zhangke
     * @time 2019年12月23日10:10:35
     */
    @Component
    @Slf4j
    @Intercepts({//注意看这个大花括号,也就这说这里可以定义多个@Signature对多个地方拦截,都用这个拦截器
            @Signature(type = Executor.class,//这是指拦截哪个接口
                    method = "query",//这个接口内的哪个方法名,不要拼错了
                    //这是拦截的方法的入参,按顺序写到这,不要多也不要少,如果方法重载,可是要通过方法名和入参来确定唯一的
                    args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class})
    })
    public class AuthorityFilterPlugin implements Interceptor {
    
        /**
         * 这里是每次执行操作的时候,都会进行这个拦截器的方法内
         *
         * @param invocation
         * @return
         * @throws Throwable
         */
        @Override
        public Object intercept(Invocation invocation) throws Throwable {
            //对sql进行处理
            Object[] queryArgs = invocation.getArgs();
            MappedStatement mappedStatement = (MappedStatement) queryArgs[0];
            Object parameter = queryArgs[1];
            BoundSql boundSql = mappedStatement.getBoundSql(parameter);
            // 获取到SQL ,进行调整
            String sql = boundSql.getSql();
            if (!sql.contains("limit")) {
                sql = sql + "limit 1";
            }
            log.info("正在执行的sql是: {}", sql);
            return invocation.proceed();
        }
    
        /**
         * 主要是为了把这个拦截器生成一个代理放到拦截器链中
         */
        @Override
        public Object plugin(Object target) {
            //官方推荐写法
            return Plugin.wrap(target, this);
        }
    
    
        /**
         * 插件初始化的时候调用,也只调用一次,插件配置的属性从这里设置进来
         *
         * @param properties
         */
        @Override
        public void setProperties(Properties properties) {
        }
    
    
    }

     

    下面是过滤的参数的设置.

    package com.curefun.authority.filter;
    
    
    import lombok.Data;
    import java.util.List;
    
    /**
     * 过滤器的参数实体类,用于拼接SQL用的
     *
     * question:
     * 1.分页怎么办? mybatis的分页插件之前执行...
     * 2.夺标关联查询怎么办? 别名的设置?
     * 3.这是单独的一个服务,获取到的sql, 可以用拼接url的形式转发给其他服务,其他服务又需要改造,添加mybatis 的插件.
    4.一个查询方法对应的多个sql的时候,拼接哪一个?怎么指定?
     *
     */
    @Data
    public class FilterVO {
    
    
        private String id;
        /**
         * 服务名
         */
        private String serviceName;
        /**
         * 请求的url
         */
        private String requestUrl;
        /**
         * 类型 0:不启用   1:启用
         */
        private Integer filterState;
        /**
         * 参数的具体值
         */
        private List<ColumnDataVO> params;
    
    
    }
    
    
    package com.curefun.authority.filter;
    
    import lombok.Data;
    
    
    /**
     * 一个查询的所有要拼接的参数
     */
    @Data
    public class ColumnDataVO<T> {
    
        /**
         * 列名字
         */
        private String columnName;
        /**
         * 列值,String,Number,List,Set,类型,或者Pair的类型
         */
        private T value;
        /**
         * 类型
         */
        private OperationEnum operationEnum;
        /**
         * 参数类型
         */
        private ParamTypeEnum paramEnum;
        /**
         * 排序,从0 开始,数字越小拼接就越靠前,不能为空
         */
        private int orderNum;
    
    
        public ColumnDataVO(String columnName, T value, OperationEnum operationEnum, ParamTypeEnum paramEnum, int orderNum) {
            this.columnName = columnName;
            this.value = value;
            this.operationEnum = operationEnum;
            this.paramEnum = paramEnum;
            this.orderNum = orderNum;
        }
    
        public ColumnDataVO() {
        }
    
    }
    
    
    package com.curefun.authority.filter;
    
    /**
     * 操作类型化的美剧
     */
    public enum OperationEnum {
        EQUAL(1,"=","相等"),
        GT(2,">","大于"),
        LT(3,"<","小于"),
        GTE(4,">=","大于等于"),
        LTE(5,"<=","小于等于"),
        IN(6,"in","包含"),
        BETWEEN(7,"between","介于之间"),
        ;
    
        private int typeCode;
        private String operationSymbol;
        private String message;
    
        OperationEnum(int typeCode, String operationSymbol, String message) {
            this.typeCode = typeCode;
            this.operationSymbol = operationSymbol;
            this.message = message;
        }
    
    
        public int getTypeCode() {
            return typeCode;
        }
    
        public String getOperationSymbol() {
            return operationSymbol;
        }
    
        public String getMessage() {
            return message;
        }
    }
    
    
    
    package com.curefun.authority.filter;
    
    /**
     * 参数类型
     */
    public enum ParamTypeEnum {
    
    
        STRING(1,"字符串"),
        NUMBER(2,"数字"),
        LIST(3,"List"),
        SET(4,"Set"),
        /**
         * HH:mm:ss
         */
        TIME(5,"时间"),
        /**
         * yyyy-MM-dd HH:mm:ss
         */
        DATEtIME(6,"时间"),
        /**
         * 双值,用于between的前后范围
         */
        PAIR(7,"双值"),
        ;
    
        private int type;
        private String message;
    
        ParamTypeEnum(int type, String message) {
            this.type = type;
            this.message = message;
        }
    
        public int getType() {
            return type;
        }
    
        public String getMessage() {
            return message;
        }
    }
    
    

     

    未完成的部分:

    1.根据FilterVO 做SQL的拼接.

    2.以上的四个问题,有待于解决,

    3.mybatis的过滤器中,怎么根据sql进行正确的拼接, 而且需要考虑效率问题.

    5.系统配置的表设计,我这里没做,我想过一下, 但是没有把表设计出来,其实是个一对多的表设计, 两张表就够了.

     

    好了, 就写到这里, 之所以不往下写了, 是因为业务暂时没有这方面的需求, 我这个只是属于前期的探索, 这个已经完成的项目, 还有很大的变数, 还未交付. 所以不做了. 好好复习.

    这里放一个别人设计的一张表结构: 

    CREATE TABLE `sys_acl_data` (
      `id` int(11) NOT NULL,
      `acl_id` int(11) NOT NULL COMMENT '对应权限表主键',
      `status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '状态,1:可用,0:不可用',
      `param` varchar(20) NOT NULL DEFAULT '' COMMENT '参数',
      `operation` int(11) NOT NULL DEFAULT '0' COMMENT '操作类型,0;等于,1:大于,2:小于,3:大于等于,4:小于等于,5:包含,6:介于之间,。。。',
      `value1` varchar(100) NOT NULL DEFAULT '0',
      `value2` varchar(100) NOT NULL DEFAULT '0',
      `next_param_op` int(11) NOT NULL DEFAULT '0' COMMENT '后续有参数时连接的关系,0:没有其他参数控制,1:与&&,2:或||',
      `seq` tinyint(4) NOT NULL DEFAULT '0' COMMENT '顺序',
      PRIMARY KEY (`id`),
      KEY `idx_acl_id` (`acl_id`) USING BTREE
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='数据权限表';

    有可取之处, 不过要想在实际生产环境中适用, 还有很多的工作需要做, 

     

    如果您觉得写得不多, 可以请作者喝一杯咖啡

     

     

     

    展开全文
  • 最近在读阿里数据中台的书,因为要在组内做分享,就多度了几遍。与阿里大数据实践之路配合,基本可以看到阿里建设数据中台的过程,和一些技术细节。做一件有价值的事情就是把自己觉得好的东西分享出来,那么开始内容...

    最近在读阿里数据中台的书,因为要在组内做分享,就多度了几遍。与阿里大数据实践之路配合,基本可以看到阿里建设数据中台的过程,和一些技术细节。做一件有价值的事情就是把自己觉得好的东西分享出来,那么开始内容

    (1)大数据的发展历程和价值探索

    大数据的发展

    文章开篇是一段作者建设数据中台过程的心路历程,下来就是老套路,介绍了国内外大数据发展的历程与大数据的价值探索,这里做简单的介绍。
    大数据编年史
    两个重要的节点需要说一下

    1. 2003年谷歌公开了内部对于海量文件的处理技术、GFS分布式文件系统、并行计算处理框架MapReduce、高效数据存储模型BigTable,这些促成了分布式系统基础架构—hadoop。为各个大数据组件的诞生打下基础。
    2. 2012年全球大数据从TB上升到PB,也是阿里大数据之路开端的一年。

    大数据的价值

    大数据的价值书中主要从四个方面介绍,在下面的四个方面都深刻的解析了大数据的实际应用和真是含义。

    1. 语义层面:‘数据’即所有信息的记录,例如用户访问网站的信息的转化过程的行为属性;大是巨量的意思,可以隐身为数量、形式、含义的丰富,保障实现被高保真的记录与回放
    2. 实现层面:大数据是一套数据处理技术活方法体系,实现具体以上特征的数据的存储、计算、共享、备份和容灾、保密等,保证数据处理的时效性和拓展性
    3. 服务层面:大数据的数据技术变革引发的新型信息服务模式,例如从数据探索出发,系统主动推送信息给用户做决策、给及其优化参数、基于数据的量变完成数据的质变
    4. 应用层面:大数据是数据服务组合生成的新场景、新体验、日益增长的数据量非但不会使信息获取效率降低、质量下降,反而会让每个人都能得到快速的迭代,个性化的互联网服务。

    ##(2)阿里的大数据主张
    在数据提供服务的基础上,阿里对数据的要求是准、快、全、统、通,简单的解释是标准统一
    融会贯通、资产化、服务化、闭环自优,这是阿里数据中台实现目标的核心。
    数据中台赋能业务运行图
    要实现上面的目标,如何做呢?
    图片展示了数据中台运行的过程,主要抽象成三个部分
    第一部分:OneData致力于实现数据的标准与统一
    第二部分:OneEntity致力于实现实体的统一,让数据融通而非以孤岛存在,为精准的用户画像提供基础
    第三部分:OneService致力于实现数据服务统一,让数据复用而非复制

    从两一个维度看一下数据中台赋能业务的全景图
    数据中台赋能业务全景图

    • 数据后台:计算数据后台同时具有离线计算、实时计算计算能力和在线分析能力从而可以让用户今早的看见昨天及以前汇总及萃取的数据,准确无误的看到上一秒产生的数据、在线分析,查看海量的数据
    • 数据中台:云上数据中台、通过智能数据能力实现全局数据仓库规划、数据规范定义、数据建模研发、数据连接萃取、数据运维监控,拥有多样的数据的分层数据中心。
    • 数据前台:数据前台的核心是通过数据的复用,为多个业务线提供数据高效的数据服务。

    ——————————————————————————————————————
    今天就介绍到这里,下次介绍阿里巴巴的大数据建设过程,主要以时间为主线介绍。

    展开全文
  • MySQL创建数据库和创建数据

    万次阅读 多人点赞 2019-10-20 23:44:40
    MySQL 创建数据库和创建数据表 MySQL 是最常用的数据库,在数据库操作中,基本都是增删改查操作,简称CRUD。 在这之前,需要先安装好 MySQL ,然后创建好数据库、数据表、操作用户。 一、数据库操作语言 数据库...

    MySQL 创建数据库和创建数据表

    MySQL 是最常用的数据库,在数据库操作中,基本都是增删改查操作,简称CRUD。

    在这之前,需要先安装好 MySQL ,然后创建好数据库、数据表、操作用户。

    一、数据库操作语言

    数据库在操作时,需要使用专门的数据库操作规则和语法,这个语法就是 SQL(Structured Query Language) 结构化查询语言。

    SQL 的主要功能是和数据库建立连接,进行增删改查的操作。SQL是关系型数据库管理系统的标准语言。

    SQL 语言的作用:

    1. 数据定义语言 DDL(Data Definition Language) 。用于创建数据库,数据表。

    2. 数据操作语言 DML(Data Manipulation Language) 。用于从数据表中插入、修改、删除数据。

    3. 数据查询语言 DQL(Data Query Language) 。用于从数据表中查询数据。

    4. 数据控制语言 DCL(Data Control Language) 。用来设置或修改数据库用户或角色的权限。

    使用 SQL 操作数据库时,所有的 SQL 语句都以分号结束。(切换数据库时可以不用分号)

    在 SQL 语句中,不区分大小写,编写 SQL 语句时可以根据情况用大小写的区别来增加可读性。

    二、创建数据库

    1. 连接 MySQL

    输入 mysql -u root -p 命令,回车,然后输入 MySQL 的密码(不要忘记了密码),再回车,就连接上 MySQL 了。

    mysql -u root -p

    最初,都是使用 root 用户登录,工作中如果一直用 root 用户登录,因为权限太大,风险是很大的,所以等创建好权限适合的用户后,就不要经常登录 root 用户了。

    2. 查看当前的数据库

    使用 show databases; 查看当前安装的 MySQL 中有哪些数据库。

    show databases;

    刚安装 MySQL 时,默认有四个数据库,information_schema,mysql,perfomance_schema,sys 。通常情况下,我们不会直接使用这四个数据库,但千万不要把这四个数据库删了,否则会带来很多不必要的麻烦。如果不小心删了,建议是重新安装 MySQL ,在重装之前把自己的数据迁移出来备份好,或者从其他服务器上迁移一个相同的数据库过来。

    3. 创建数据库

    使用 create database 数据库名; 创建数据库。

    create database MyDB_one;

    创建数据库成功后,数据库的数量变成了5个,多了刚才创建的 MyDB_one 。

    4. 创建数据库时设置字符编码

    使用 create database 数据库名 character set utf8; 创建数据库并设置数据库的字符编码。

    create database MyDB_two character set utf8;
    

    直接创建的数据库,数据库的编码方式是 MySQL 默认的编码方式 latin1 (单字节编码) ,通常我们会在数据库中存放中文数据,所以最好把数据库的编码方式设置成 utf-8 ,这样中文才能正常显示。

    create database MyDB_three charset utf8;

    character set 可以缩写成 charset ,效果是一样的。

    5. 查看和显示数据库的编码方式

    使用 show create database 数据库名; 显示数据库的创建信息。

    show create database MyDB_one;
    show create database MyDB_two;

    如果不知道一个数据库的编码方式是什么,可以使用 show create database 数据库名 来查看数据库的编码方式。可以看到刚才创建的 MyDB_one 的编码方式是 MySQL 的默认编码 latin1 ,MyDB_two 的编码方式是 utf-8 。

    当然,这种方式不能在创建的同时显示,只能查看一个已经存在的数据库的编码方式。

    6. 使用 alter database 数据库名 character set utf8; 修改数据库编码

    alter database MyDB_one character set utf8;

    如果一个数据库的编码方式不符合使用需求,可以进行修改。刚才创建的 MyDB_one 经过修改后,编码方式也变成了 utf-8 。

    7. 进入或切换数据库

    使用 use 数据库名 进入或切换数据库。

    use MyDB_one
    use MyDB_two;

    刚连接上 MySQL 时,没有处于任何一个数据库中,如果要使用某一个数据库,就需要进入到这个数据库中。

    use 数据库名 这个命令后面的分号可以省略,这是 SQL 语句中唯一可以省略分号的语句。

    8. 显示当前数据库 select database();

    select database();

    进入数据库中,可以使用 select database(); 来查看当前处于哪个数据库中。长时间操作数据库时,在很多数据库中来回切换后,查看当前的数据库,避免操作错了数据库。

    三、创建数据表

    1. 查看当前数据库中的表

    使用 show tables;查看当前数据库中有哪些表。

    show tables;
    

    在刚才创建的数据库 MyDB_one 中,还没有创建任何表,所以当前是空的。

    2. 创建表

    使用 create table 表名(字段1 字段类型,字段2 字段类型,字段3 字段类型,…); 来创建一张表。

    create table Phone_table(pid INT, name CHAR(20), price INT);

    在 MyDB_one 中创建了一个叫 Phone_table 的数据表,这张表有三个字段 pid,name,price 。为了增加 SQL 的可读性,字段名我用的是小写,字段类型用大写。

    3. 显示表信息

    用 show create table 表名; 来显示已创建的表的信息。

    show create table Phone_table;

    使用 show create table 表名;  可以显示表的字段信息, MySQL 的引擎,和默认的字符编码等信息。与显示数据库信息一样,show 只能显示已经创建了的数据表的信息,不能在创建的同时显示信息。

    如果想更好地展示表的字段信息,可以使用 desc 表名; 来显示表的字段信息。

    4. 给表增加字段

    使用 alter table 表名 add 字段名 数据类型; 为已存在的表添加一个新字段。

    alter table Phone_table add color CHAR(20);

    添加后,刚才的表中多了一个字段,新增成功。

    5. 删除表的字段

    使用 alter table 表名 drop 字段名; 删除一个表中已存在的字段。

    alter table Phone_table drop price;

    删除字段后,表中不再有该字段。

    6. 修改字段的数据类型

    使用 alter table 表名 modify 字段名 数据类型; 修改表中现有字段的数据类型。

    alter table Phone_table modify name VARCHAR(12);

    修改之后,该字段的数据类型发生改变。

    7. 修改字段的数据类型并且改名

    使用 alter table 表名 change 原字段名 新字段名 数据类型; 修改表中现有字段的字段名和类型。

    alter table Phone_table change name pname CHAR(18);

    现在,将表的 name 改成了 pname ,同时修改了 pname 的数据类型。

    四、MySQL 常用字段类型

    一个数据表是由若干个字段组成的,一个表十几个字段也很正常,每个字段表示不同的信息,需要使用不同类型的数据。

    所以在创建表的时候,要为每个字段指定适合的数据类型。

    MySQL 中常用的字段类型有以下这些:

    1. 整数类型

    数据类型数据范围
    TINYINT-128 -- 127
    SMALLINT-32768 -- 32767
    MEDIUMINT-2^23 -- 2^23-1
    INT-2^31 -- 2^31-1
    BIGINT-2^63 -- 2^63-1

    2. 字符串类型

    数据类型字节范围用途
    CHAR(n)0 -- 255字节定长字符串
    VARCHAR(n)0 -- 65535字节变长字符串
    TEXT0 -- 65535字节长文本数据
    LONGTEXT0 -- 2^32-1字节极大文本数据
    BLOB0 -- 65535字节二进制长文本数据
    LONGBLOB0 -- 2^32-1字节二进制极大文本数据

    3. 小数类型

    m 表示浮点数的总长度,n 表示小数点后有效位数。

    数据类型数据用法数据范围
    FloatFloat(m,n)7位有效数
    DoubleDouble(m,n)15位有效数
    DecimalDecimal(m,n)28位有效数

    4. 时间类型

    数据类型格式用途
    DATEYYYY-MM-DD日期
    TIMEHH:MM:SS时间
    YEARYYYY年份
    DATETIMEYYYY-MM-DD HH:MM:SS日期和时间
    TIMESTAMP10位或13位整数(秒数)时间戳

    5. 枚举类型

    enum(枚举值1,枚举值2,...)

    枚举类型只能在列出的值中选择一个,如性别。

     

     

    展开全文
  • 数据权限界面设计

    千次阅读 2019-04-29 15:32:00
    2019独角兽企业重金招聘Python工程师标准>>> ...配置好后,服务根据配置好的权限,拼接权限SQL,实现数据权限控制 转载于:https://my.oschina.net/angelbo/blog/3043953

    在权限管理中,有数据权限管理菜单,选中数据权限管理时,加载列表,列表中展示角色实例信息,即用户(角色)
    如:admin(超级管理员)、angel(北京医院机构管理员),whshs(社区报告医生)
    

    点击数据权限按钮,弹出数据权限配置窗口
    

    配置好后,服务根据配置好的权限,拼接权限SQL,实现数据权限控制
    

    转载于:https://my.oschina.net/angelbo/blog/3043953

    展开全文
  • 通用权限管理设计 之 数据权限

    万次阅读 2018-01-04 10:09:40
    本文将对这种设计思想作进一步的扩展,介绍数据权限的设计方案。 权限控制可以理解,分为这几种 : 【功能权限】:能做什么的问题,如增加产品。 【数据权限】:能看到哪些数据的问题,如查看本人的所有订单。 ...
  • 大数据平台数据权限管理设计

    千次阅读 2020-02-25 15:22:43
    对于数据开发者,主要通过分配IAM控制AWS的操作权限;对于team的所有人都是通过分配aws的ak,sk在本地进行操作赋权;随着数据平台的不断的丰富和完善,需要在各组件之上做认证,鉴权和审计等管理,数...
  • 权限管理-数据权限

    千次阅读 2016-05-12 11:36:56
    权限管理-数据权限
  • 文章目录权限分类数据权限实现MyBatis的拦截器简介具体实现数据库设计权限类型设计拦截器实现参数传递加载拦截器忽略拦截使用示例 今天来整理分享下常用的权限设计,以及基于Mybatis-plus实现的一套数据权限的实现。...
  • 数据安全之用户权限

    万次阅读 2020-05-08 11:46:03
    当我们在做多用户系统时,对于用户的编辑删除操作,一定需要主要对用户ID进行权限判断再进行删除处理.避免出现漏洞造成数据丢失
  • 滴滴大数据安全权限实践

    千次阅读 2020-12-17 21:12:09
    桔妹导读:在滴滴,数据是非常重要的资产,基于数据的数仓建设,数据分析、数据挖掘、数据科学等构建了滴滴的数据体系,支撑着滴滴的业务快速发展。在这个背景下,如何保障用户获取数据的易用性的同时...
  • 最近在做分布式细粒度权限控制,业务需要使用各个服务的接口及权限信息进行权限的校验。 使用Nacos作为服务注册中心和配置中心,在服务注册时把服务的接口信息放入服务数据里,其他需要使用这些接口信息的服务只...
  • url进行加密处理来保护服务器上的数据我认为,保护服务器端的数据,有这么几个关键点: 不能对使用体验产生影响,这就排除掉了诸如每次接口调用都要求用户输入验证码这样的做法 接口调用的网络交互需要无规律可循,...
  • 大数据开发平台-数据同步服务

    万次阅读 2017-09-21 13:38:35
    根据具体业务目的和应用场景的不同,各种数据同步服务框架的功能侧重点往往不尽相同,因而大家也会用各种大同小异的名称来称呼这类服务,比如数据传输服务数据采集服务数据交换服务等等 至于大数据开发平台的...
  • 权限菜单(后端返回数据

    千次阅读 2019-08-11 15:10:41
    权限菜单 后端准备数据: Server.js let express = require('express'); let app = express(); app.use('*', function (req, res, next) { res.header('Access-Control-Allow-Origin', '*'); //Access-...
  • 不论是在技术层面还是在产品层面,大数据平台环境下的权限管理工作都是一个让人伤脑筋的烫手山芋,它不仅仅是一个技术问题,还是一个业务问题,甚至还可能是一个人际沟通和权衡利益得失的哲学问题。。。所以,以下...
  • 2. 掌握权限数据模型 3. 掌握基于url的权限管理(不使用Shiro权限框架的情况下实现权限管理) 4. shiro实现用户认证 5. shiro实现用户授权 6. shiro与企业web项目整合开发的方法 权限管理原理知识 什么是权限管理 只要...
  • 如果基于更高性能、更灵活扩展或供应商更换需求,您可能需要将...作为值得信赖的香港服务器租用托管服务商,稳网互联小编将向您简单展示服务器数据迁移时应注意的事项。 将数据迁移到新服务器之前 - 正确规划 选择合...
  • 4、《ContentProvider数据库共享之——读写权限数据监听》   经过前面三篇文章,我想大家对ContentProvider已经有了大部分的了解,但在第二篇中,我们提到过一个函数:   getContentResolver()....
  • 权限数据的缓存探讨

    千次阅读 2011-09-07 07:02:39
    权限数据方面,我们的处理方式是一次性获取相关权限数据(SQL比较复杂一点),并按对象,操作,行级组织成层次结构,然后对这部分数据进行了缓存,而且是客户端和服务器端同时缓存,这样做虽然便于用户权限访问方
  • SQLServer中服务器角色和数据库角色权限详解 角色 当几个用户需要在某个特定的数据库中执行类似的动作时(这里没有相应的Windows用户组),就可以向该数据库中添加一个角色(role)。数据库角色指定了可以访问相同...
  • Hue管理用户对于hive数据表的操作权限   1、 hue开通用户,只给该用户hive的访问权限 http://blog.csdn.net/u012551524/article/details/79392439 首先创建一个名pbdd的hue用户,给该用户hive的访问权限 2、...
  • 企业架构-数据服务总线思路

    千次阅读 2020-04-20 15:14:51
    数据服务总线是快速数据集市构建工具,提供企业内部以及跨企业间不同业务主题之间数据共享和同步服务,设计的目的是对最终业务数据进行预处理,以减少业务复杂度提高访问效率。 背景描述 在常规的业务系统中数据...
  • 帆软报表权限控制

    千次阅读 2019-04-02 15:52:07
    FineReport报表通过权限控制数据访问方案 问题:实际应用环境中,不同角色的人可能对数据具有不同的访问权限,通过直接在SQL语句中筛选出需要的数据制作模板可以解决该需求,但对于角色较多的情况,就需要制作很多...
  • 通过结合帐号、应用和数据库三元组,分布式数据服务对属于不同的应用的数据进行隔离,保证不同应用之间的数据不能通过分布式数据服务互相访问。在通过可信认证的设备间,分布式数据服务支持应用数据相互同步,为用户...
  • 大数据是工业社会的「自由」资源,谁掌握了数据,谁就掌握了主动权。随着企业数字化转型的浪潮,数据更是成为了金融行业的核心资产和创新要素。 而证券行业作为国家金融活动的重要入口,汇聚了大量的金融数据。其...
  • SQL Server的安全体系结构中包括了几个含有特定隐含权限的角色。除了数据库拥有者创建的角色之外,还有两类预定义的角色。这些可以创建的角色可以分为如下几类: 1、固定服务器 2、固定数据库 3、用户自定义 4、...
  • 关于数据库表字段的数据权限设计

    千次阅读 2013-05-27 17:04:44
    现在做的研发产品,遇到的一个新的需求是“控制外部系统对于表中字段的访问权限”,其实说白了,就是“对于CRUD操作,操作的字段根据字段权限表来做的”。但是,我觉得真正要做到对于数据库表字段的权限设计,面临...
  • 权限管理数据表设计说明(五张表)

    万次阅读 2017-08-31 11:09:52
    权限管理数据表设计说明 B/S系统中的权限比C/S中的更显的重要,C/S系统因为具有特殊的客户端,所以访问用户的权限检测可以通过客户端实现或通过客户端+服务器检测实现,而B/S中,浏览器是每一台计算机都已具备的,...
  • 一、权限设置 1、连接到本机上的MYSQL。 首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 778,184
精华内容 311,273
关键字:

数据权限服务