(后端)权限的简单想法(一)

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)的封装和使用.
各种树:部门树,权限模块树,角色权限树,用户权限树.

  

原文地址:https://www.cnblogs.com/historylyt/p/7214446.html