zoukankan      html  css  js  c++  java
  • (后端)权限的简单想法(一)

    1.权限简单的做法和想法:

    1.1.权限每个人进来看到不同的内容,有着不同的功能.比如boss可以设置下面人的权限,权限放大,权限缩小.开辟新权限,分配角色,角色分配人员,权限分配这些等等.

    1.2.具体的shiro还是喜欢自己做权限的还是自己决定吧,用了shiro,退出之后,起作用啦.自己做权限ajax即使的做刷新,用着是方便,就是太费时间.

    1.3.举个例子,boss给一个部门经理一些权限,部门经理可以把自己的权限发放给其他人,比如手下的高管..等等.这个比较的细致.(我自己的权限可以分派给其他的人员)

    1.4.sql语句.如下:

          2017.6.16查询人员全部的角色:
    
          当前人员的所有角色,count(1) 大于0 的是自己,否则是其他
    
      select *,(select COUNT(1) from t_users_roles t where " + "t.role_id = r.id and t.user_id = " + id
                    + ") " + "verifynum from t_role r
    
         2017.6.16查询功能全部的角色:count(1) 大于0 的是自己,否则是其他
    
         String sql = "select *,(select COUNT(1) from t_roles_permissions "
                          + "t where t.role_id = r.id and t.permission_id = "+id+")"
                          + " verifynum from t_role r";
    
         增加角色人員表:String sql = "insert into t_users_roles values("+userid+","+roleid+")";
    
       删除角色人员表:    String sql = " insert into t_roles_permissions values("+roleid+","+permissionid+")";
    
        修改角色表 :String sql = "update t_role set name = '"+name+"',code = '"+code+"' where id = " + id;
    
        根据用户id查询角色权限主菜单.
    
        String sql = "select min(id),module from dbo.t_permission where id in"
                        +"(select permission_id from dbo.t_roles_permissions where role_id in"
                        +"(select role_id from dbo.t_users_roles where user_id = "+id+"))"
                        +"and module is not null group by module order by module desc";
    
      根据主菜单功能查询所属子菜单
    
          String sql = "select info,code from dbo.t_permission"
                    + " where module = '"+module+"' and nosecone = 0"
                    + " and info is not null order by id asc";
    
    查询角色所有功能:
    
        String sql = "select *,(select COUNT(1) from t_roles_permissions t where "
                        + "t.permission_id = p.id and t.role_id = "+id+" ) verifynum"
                        + " from  t_permission  p order by module desc";
    删除角色功能表 :
    
                 String sql = "delete from t_roles_permissions where  permission_id = "+id+"";
    
    增加角色功能表:
    
        String sql = "insert into t_roles_permissions values ("+id+","+permissionid+")";
    
    查找当前角色的人员:   
    
      String sql = "select *,(select COUNT(1) from t_users_roles r  where r.user_id = u.id "
                        + "and r.role_id = "+id+" ) verifynum from"
                        + " t_user u;";
    
    如果权限要分:前端,App,小程序,后台
    
        需要的是前端有自己的功能,后台也要有自己的功能,app也要有?加一个type字段,不要复制一套权限表,太冗余啦。
    
        角色我前台可以更改后台的角色吗?角色也加一个type字段,每个系统有一个admin,不需要查看其它系统的角色与权限。
    
        我怎么去给这些系统分配角色?通过事先看那个系统第一个人登录,给他们一个adminApp,或者前端的角色就可以啦.

    2.操作,自己建立权限的操作系统(SpringMVC,MySql)

    2.1.要做的事情:

    2.1.1.表设计:部门表,人员表,权限表,权限模块表.

    /*
    Navicat MySQL Data Transfer

    Source Server : localhost
    Source Server Version : 50520
    Source Host : localhost:3306
    Source Database : test001

    Target Server Type : MYSQL
    Target Server Version : 50520
    File Encoding : 65001

    Date: 2018-12-01 16:24:58
    */

    SET FOREIGN_KEY_CHECKS=0;

    -- ----------------------------
    -- Table structure for `dept`
    -- ----------------------------
    DROP TABLE IF EXISTS `dept`;
    CREATE TABLE `dept` (
    `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '部门id',
    `name` varchar(20) DEFAULT NULL COMMENT '部门名称',
    `parent_id` int(11) DEFAULT NULL COMMENT '上级部门id',
    `level` varchar(200) DEFAULT NULL COMMENT '部门层级',
    `seq` int(11) DEFAULT '0' COMMENT '部门当前层级顺序,从小到大',
    `remark` varchar(200) DEFAULT NULL,
    `operator` varchar(200) DEFAULT NULL COMMENT '操作人',
    `operator_time` datetime DEFAULT NULL COMMENT '操作时间',
    `operator_ip` varchar(255) DEFAULT NULL COMMENT '操作ip地址',
    `deleted` varchar(50) DEFAULT NULL COMMENT '删除标志',
    `createdtime` datetime DEFAULT NULL COMMENT '创建时间',
    `created_by_user` varchar(200) DEFAULT NULL COMMENT '创建人',
    `last_modified_time` datetime DEFAULT NULL COMMENT '修改时间',
    `modified_by_user` varchar(200) DEFAULT NULL COMMENT '修改人',
    `version` int(11) DEFAULT NULL COMMENT '版本号',
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    -- ----------------------------
    -- Records of dept
    -- ----------------------------

    -- ----------------------------
    -- Table structure for `t_permission`
    -- ----------------------------
    DROP TABLE IF EXISTS `t_permission`;
    CREATE TABLE `t_permission` (
    `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '权限id',
    `model_id` int(11) DEFAULT NULL COMMENT '权限模块id,连接权限模块表',
    `code` varchar(200) DEFAULT NULL COMMENT '唯一编码',
    `name` varchar(200) DEFAULT NULL COMMENT '权限名称',
    `url` varchar(200) DEFAULT NULL COMMENT '网址',
    `type` int(11) DEFAULT NULL COMMENT '类型,1,菜单,2,按钮,3.其他.',
    `status` int(11) DEFAULT NULL COMMENT '状态0正常,1,冻结状态',
    `seq` int(11) DEFAULT NULL COMMENT '权限再当前模块的顺序,由小到大.',
    `remark` varchar(200) DEFAULT NULL,
    `operator` varchar(200) DEFAULT NULL COMMENT '操作人',
    `operator_time` datetime DEFAULT NULL COMMENT '操作时间',
    `operator_ip` varchar(255) DEFAULT NULL COMMENT '操作ip地址',
    `deleted` varchar(50) DEFAULT NULL COMMENT '删除标志',
    `createdtime` datetime DEFAULT NULL COMMENT '创建时间',
    `created_by_user` varchar(200) DEFAULT NULL COMMENT '创建人',
    `last_modified_time` datetime DEFAULT NULL COMMENT '修改时间',
    `modified_by_user` varchar(200) DEFAULT NULL COMMENT '修改人',
    `version` int(11) DEFAULT NULL COMMENT '版本号',
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    -- ----------------------------
    -- Records of t_permission
    -- ----------------------------

    -- ----------------------------
    -- Table structure for `t_permission_history`
    -- ----------------------------
    DROP TABLE IF EXISTS `t_permission_history`;
    CREATE TABLE `t_permission_history` (
    `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '历史表id',
    `type` int(11) DEFAULT NULL COMMENT '权限更新的类型1.部门,2.用户,3.权限模块,4.权限,5.角色,6.角色用户关系,7.角色权限关系。',
    `target_id` int(11) DEFAULT NULL COMMENT '基于type的id.',
    `old_value` varchar(200) DEFAULT NULL COMMENT '旧值.',
    `new_value` varchar(200) DEFAULT NULL,
    `operator` varchar(200) DEFAULT NULL COMMENT '操作人',
    `operator_time` datetime DEFAULT NULL COMMENT '操作时间',
    `operator_ip` varchar(255) DEFAULT NULL COMMENT '操作ip地址',
    `status` int(11) DEFAULT NULL COMMENT '当前是否复原过,0没有,1有。',
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    -- ----------------------------
    -- Records of t_permission_history
    -- ----------------------------

    -- ----------------------------
    -- Table structure for `t_permission_model`
    -- ----------------------------
    DROP TABLE IF EXISTS `t_permission_model`;
    CREATE TABLE `t_permission_model` (
    `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '权限模块id',
    `name` varchar(20) DEFAULT NULL COMMENT '权限模块名称',
    `parent_id` int(11) DEFAULT NULL COMMENT '上级权限模块id',
    `level` varchar(200) DEFAULT NULL COMMENT '权限模块层级',
    `seq` int(11) DEFAULT '0' COMMENT '权限模块当前层级顺序,从小到大',
    `status` int(11) DEFAULT '0' COMMENT '状态,0,正常,1.冻结.',
    `remark` varchar(200) DEFAULT NULL,
    `operator` varchar(200) DEFAULT NULL COMMENT '操作人',
    `operator_time` datetime DEFAULT NULL COMMENT '操作时间',
    `operator_ip` varchar(255) DEFAULT NULL COMMENT '操作ip地址',
    `deleted` varchar(50) DEFAULT NULL COMMENT '删除标志',
    `createdtime` datetime DEFAULT NULL COMMENT '创建时间',
    `created_by_user` varchar(200) DEFAULT NULL COMMENT '创建人',
    `last_modified_time` datetime DEFAULT NULL COMMENT '修改时间',
    `modified_by_user` varchar(200) DEFAULT NULL COMMENT '修改人',
    `version` int(11) DEFAULT NULL COMMENT '版本号',
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    -- ----------------------------
    -- Records of t_permission_model
    -- ----------------------------

    -- ----------------------------
    -- Table structure for `t_role`
    -- ----------------------------
    DROP TABLE IF EXISTS `t_role`;
    CREATE TABLE `t_role` (
    `id` int(11) NOT NULL COMMENT '角色id',
    `name` varchar(200) DEFAULT NULL COMMENT '角色名称',
    `type` int(11) DEFAULT NULL COMMENT '角色的类型,0.管理员,1.其他',
    `status` int(11) DEFAULT NULL COMMENT '状态:0可用,1冻结',
    `remark` varchar(200) DEFAULT NULL COMMENT '备注',
    `operator` varchar(200) DEFAULT NULL COMMENT '操作人',
    `operator_time` datetime DEFAULT NULL COMMENT '操作时间',
    `operator_ip` varchar(255) DEFAULT NULL COMMENT '操作ip地址',
    `deleted` varchar(50) DEFAULT NULL COMMENT '删除标志',
    `createdtime` datetime DEFAULT NULL COMMENT '创建时间',
    `created_by_user` varchar(200) DEFAULT NULL COMMENT '创建人',
    `last_modified_time` datetime DEFAULT NULL COMMENT '修改时间',
    `modified_by_user` varchar(200) DEFAULT NULL COMMENT '修改人',
    `version` int(11) DEFAULT NULL COMMENT '版本号',
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    -- ----------------------------
    -- Records of t_role
    -- ----------------------------

    -- ----------------------------
    -- Table structure for `t_roles_permissions`
    -- ----------------------------
    DROP TABLE IF EXISTS `t_roles_permissions`;
    CREATE TABLE `t_roles_permissions` (
    `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '角色权限关联表',
    `role_id` int(11) DEFAULT NULL,
    `permission_id` int(11) DEFAULT NULL,
    `operator` varchar(200) DEFAULT NULL COMMENT '操作人',
    `operator_time` datetime DEFAULT NULL COMMENT '操作时间',
    `operator_ip` varchar(255) DEFAULT NULL COMMENT '操作ip地址',
    `createdtime` datetime DEFAULT NULL COMMENT '创建时间',
    `created_by_user` varchar(200) DEFAULT NULL COMMENT '创建人',
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    -- ----------------------------
    -- Records of t_roles_permissions
    -- ----------------------------

    -- ----------------------------
    -- Table structure for `t_user`
    -- ----------------------------
    DROP TABLE IF EXISTS `t_user`;
    CREATE TABLE `t_user` (
    `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',
    `username` varchar(200) DEFAULT NULL COMMENT '用户名称',
    `telephone` varchar(200) DEFAULT NULL COMMENT '电话',
    `mail` varchar(200) DEFAULT NULL COMMENT '邮箱',
    `password` varchar(200) DEFAULT NULL COMMENT '加密后的密码.',
    `dept_id` int(11) DEFAULT NULL COMMENT '用户部门id',
    `status` int(11) DEFAULT NULL COMMENT '用户的状态0.正常,1.冻结.2.删除',
    `remark` varchar(200) DEFAULT NULL COMMENT '备注',
    `operator` varchar(200) DEFAULT NULL COMMENT '操作人',
    `operator_time` datetime DEFAULT NULL COMMENT '操作时间',
    `operator_ip` varchar(200) DEFAULT NULL COMMENT '操作ip地址',
    `deleted` varchar(50) DEFAULT NULL COMMENT '删除标志',
    `createdtime` datetime DEFAULT NULL COMMENT '创建时间',
    `created_by_user` varchar(200) DEFAULT NULL COMMENT '创建人',
    `last_modified_time` datetime DEFAULT NULL COMMENT '修改时间',
    `modified_by_user` varchar(200) DEFAULT NULL COMMENT '修改人',
    `version` int(11) DEFAULT NULL COMMENT '版本号',
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    -- ----------------------------
    -- Records of t_user
    -- ----------------------------

    -- ----------------------------
    -- Table structure for `t_users_roles`
    -- ----------------------------
    DROP TABLE IF EXISTS `t_users_roles`;
    CREATE TABLE `t_users_roles` (
    `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '角色权限关联表',
    `role_id` int(11) DEFAULT NULL,
    `user_id` int(11) DEFAULT NULL,
    `operator` varchar(200) DEFAULT NULL COMMENT '操作人',
    `operator_time` datetime DEFAULT NULL COMMENT '操作时间',
    `operator_ip` varchar(255) DEFAULT NULL COMMENT '操作ip地址',
    `createdtime` datetime DEFAULT NULL COMMENT '创建时间',
    `created_by_user` varchar(200) DEFAULT NULL COMMENT '创建人',
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    -- ----------------------------
    -- Records of t_users_roles
    -- ----------------------------

     2.1.2.功能(部门维护,人员维护,权限维护,角色维护)

     2.2.配置管理类功能

    RBAC,用户,权限,角色管理界面(扩展:部门,权限模块.)
    角色-用户管理,角色-权限管理.
    权限更新日志的管理.

    2.3.权限拦截类功能.

    在切面Filter 做权限拦截.
    确定某个用户拥有某个权限.

    2.4.辅助类功能:缓存(Redis),各种树结构生成.

    缓存(Redis)的封装和使用.
    各种树:部门树,权限模块树,角色权限树,用户权限树.

      

  • 相关阅读:
    Delphi语法
    orcad中注意的事情
    Express web框架
    Docker
    Node.JS
    再次 WebAssembly 技术探讨
    WebAssembly 浏览器中运行c/c++模块
    Http 服务 简单示例
    CentOS7 开放服务端口
    Go linux 实践4
  • 原文地址:https://www.cnblogs.com/historylyt/p/7214446.html
Copyright © 2011-2022 走看看