当前位置: 首页 > news >正文

网站ip pv值廉溪区建设局网站

网站ip pv值,廉溪区建设局网站,网站优化排名易下拉排名,延吉市建设局网站表设计 开发用户-角色-权限管理系统#xff0c;首先我们需要知道用户-角色-权限管理系统的表结构设计。 在用户-角色-权限管理系统找那个一般会涉及5张表#xff0c;分别为#xff1a; 1.sys_users用户表 2.sys_roles角色表 3.sys_permissions权限表#xff08;或资源表首先我们需要知道用户-角色-权限管理系统的表结构设计。 在用户-角色-权限管理系统找那个一般会涉及5张表分别为 1.sys_users用户表 2.sys_roles角色表 3.sys_permissions权限表或资源表 4.sys_users_roles用户-角色关联表 5.sys_roles_permissions角色-权限关联表或角色-资源关联表 详细的建表信息如下 sys_users 解释 用户表中至少包含以上的字段主键id、用户名username、密码password、盐值salt因为密码是经过Shiro加密的需要通过盐值校验由Shiro生成不需要用户手动填写、角色列表roleId这个字段不是必须的仅实现在展示用户信息的时候能同时展示用户当前角色、是否锁定locked决定当前账户是否是锁定的。 创建新的用户仅需要输入用户名和密码即可盐值由Shiro生成角色列表和是否锁定都可以在后期管理。 其中是否锁定字段类型为tinyint(1)设置这种类型数据库中实际存储的是int类型数据一般是0和1在使用Mybatis取这个字段的数据时Mybatis会自动将tinyint(1)字段值为0的转换成false将字段值为1以上的转换为true。 sys_roles 解释 角色表中role角色名称一般为存储着类似user:create这种格式Shiro在Realm中校验用户身份的时候会通过role这个字段值进行校验description是此角色的描述信息比如用户创建。 其中pid表示父节点就是说当前的角色可能有上级节点比如老师这个角色可能就有父节点计科教师如果存在父节点这个字段值就是父级节点的ID根据这个ID在展示数据的时候就很方便的展示出其在哪个父节点下。 available表示当前节点是否锁定同样是tinyint(1)类型如果为false就说明没有锁定。 sys_users_roles 解释 用户角色表就比较简单了仅仅包含了主键id、用户user_id、角色role_id这张表主要描述指定用户与角色间的依赖关系。其中用户表与角色表是一对多的关系一个用户可以拥有多个角色。 sys_permissions 解释 权限表和角色表类似其中不同的字段是rid这个字段表示此权限关联的角色的id值当然不是必要的但是后端角色更新时用到了后面会介绍。 sys_roles_permissions 解释 角色-权限表和用户-角色表类似包含了主键id、角色role_id、权限permission_id主要描述角色和权限间的依赖关系同样角色和权限间也是一对多的关系一个角色会关联多个权限。 schema.sql 上述表设计的源码如下 -- create database shiro default character set utf8;drop table if exists sys_users; drop table if exists sys_roles; drop table if exists sys_permissions; drop table if exists sys_users_roles; drop table if exists sys_roles_permissions;create table sys_users (id bigint auto_increment comment 编号,username varchar(100) comment 用户名,password varchar(100) comment 密码,salt varchar(100) comment 盐值,role_id varchar(50) comment 角色列表,locked bool default false comment 是否锁定,constraint pk_sys_users primary key(id) ) charsetutf8 ENGINEInnoDB; create unique index idx_sys_users_username on sys_users(username);create table sys_roles (id bigint auto_increment comment 角色编号,role varchar(100) comment 角色名称,description varchar(100) comment 角色描述,pid bigint comment 父节点,available bool default false comment 是否锁定,constraint pk_sys_roles primary key(id) ) charsetutf8 ENGINEInnoDB; create unique index idx_sys_roles_role on sys_roles(role);create table sys_permissions (id bigint auto_increment comment 编号,permission varchar(100) comment 权限编号,description varchar(100) comment 权限描述,rid bigint comment 此权限关联角色的id,available bool default false comment 是否锁定,constraint pk_sys_permissions primary key(id) ) charsetutf8 ENGINEInnoDB; create unique index idx_sys_permissions_permission on sys_permissions(permission);create table sys_users_roles (id bigint auto_increment comment 编号,user_id bigint comment 用户编号,role_id bigint comment 角色编号,constraint pk_sys_users_roles primary key(id) ) charsetutf8 ENGINEInnoDB;create table sys_roles_permissions (id bigint auto_increment comment 编号,role_id bigint comment 角色编号,permission_id bigint comment 权限编号,constraint pk_sys_roles_permissions primary key(id) ) charsetutf8 ENGINEInnoDB;拓展 上面就是当前用户-角色-权限系统的表设计。细心的你可能会发现这些表中并不包含外键约束。 为什么不设计外键呢 可能你会跟我一样有这样的疑问。比如用户表和角色表间我们这里创建了用户-角色表来实现两者的关联并没有通过给两张表建立外键来实现一对多、多对多的关联关系。 因为如果你要建立外键来关联两张表你需要遇到如下 如果两张表之间存在一对多的关系在给一的一方新增数据的时候你要考虑多的一方是否存在指定的id。 如果两张表之间存在一对多的关系在删除多的一方时你要先删除其关联的一的一方再删除多的一方。 … 也就是说如果使用了外键关联那么在对表进行数据操作时就必须考虑另一张关联的表相当于两张表就绑在一起了操作这张表就必须考虑另一张关联表。 但是实际中我们不想立即就修改或更新关联表的数据我可能一会再去更新另一张关联表的数据那么就产生了这种方式通过单独建立一张关联来实现两张表的数据关联。 所以我建议大家在设计表时尽量减少表与表直接的外键约束这样能避免很多麻烦并且两张表之间的关联关系也会格外清晰。 实例 上面创建了用户-角色-权限表以及其关联表下面就介绍一些实际的案例吧 初始化表 insert into sys_users values(1,TyCoding,123,salt,管理员,0); insert into sys_roles values(21,user:create,用户创建,0,0); insert into sys_permissions values(31,user:create,用户创建,0,0); insert into sys_users_roles values(1,1,21); insert into sys_roles_permissions values(1,21,31);查询 根据用户名查询其角色 [mysql SELECT r.id, r.role, r.description FROM sys_users u, sys_roles r, sys_users_roles ur WHERE u.username TyCoding AND u.id ur.user_id AND r.id ur.role_id; ------------------------ | id | role | description | ------------------------ | 21 | admin | 管理员 | ------------------------ 1 row in set (0.00 sec)从上面的SQL中足以看出通过关联表查询另一张关联的数据要点在于WHERE条件中添加关联表与两张表的关系在这里即是关联表中存在两张表的主键id所以把相同的字段加入WHERE条件过滤就能查询到了。 根据用户名查询其权限 [mysql SELECT p.id, p.permission, p.description FROM sys_users u, sys_roles r, sys_users_roles ur, sys_permissions p, sys_roles_permissions rp WHERE u.username TyCoding AND u.id ur.user_id AND r.id ur.role_id AND r.id rp.role_id AND p.id rp.permission_id; ------------------------------- | id | permission | description | ------------------------------- | 31 | user:create | 用户创建 | ------------------------------- 1 row in set (0.00 sec)根据角色id查询其权限 [mysql SELECT p.id, p.description FROM sys_permissions p, sys_roles r, sys_roles_permissions rp WHERE r.id 21 AND rp.role_id r.id AND rp.permission_id p.id; ------------------ | id | description | ------------------ | 31 | 用户创建 | ------------------ 1 row in set (0.00 sec)更新user表中role_id字段 我们设计的sys_users表中存在一个字段role_id目的是用来展示当前用户关联的角色名称但是我们直接更新sys_roles表的description字段时又不会更新sys_users表中的role_id字段。 所以这里我们要通过更新的角色数据来更新sys_users表中的role_id字段。 [mysql UPDATE sys_users u, sys_users_roles ur SET u.role_id 管理员-更新 WHERE ur.role_id 21 AND u.id ur.user_id; Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0mysql SELECT * FROM sys_users; -------------------------------------------------------- | id | username | password | salt | role_id | locked | -------------------------------------------------------- | 1 | TyCoding | 123 | salt | 管理员-更新 | 0 | -------------------------------------------------------- 1 row in set (0.00 sec)根据权限ID查询其角色 [mysql SELECT r.id, r.description, r.pid FROM sys_permissions p, sys_roles r, sys_roles_permissions rp WHERE p.id 31 AND p.id rp.permission_id AND r.id rp.role_id; ----------------------- | id | description | pid | ----------------------- | 21 | 管理员 | 0 | ----------------------- 1 row in set (0.00 sec)
http://wiki.neutronadmin.com/news/103618/

相关文章:

  • 用node和vue做的网站运营公开网是什么网站
  • 太原网站建设质量推荐dw制作个人网站的具体步骤
  • 中国建设银行的招投标网站wordpress可以多用户吗
  • 网站关键词几个好佛山小程序开发定制
  • 网站维护更新中国建筑图片
  • 安徽制作网站专业公司中铁建设集团有限公司下属公司
  • 四川做网站的公司ip网址域名查询网
  • 网站推广效果的评价指标有信息技术做网站
  • 网站如何做百度才会收录大淘客网站建设app
  • 哪里有做网站的网站主机免备案吗
  • 北京网站建设哪便宜网站图片最大尺寸
  • 网站建设报价单初期整理奎文建设局网站
  • 网站建站建设哪家好黄冈app下载推广平台
  • htm5网站建设浙江省城乡建设监方网站
  • 杭州网站关键词推广网站开发文档撰写模板
  • 关于外贸公司的网站建设工程其它费计算网站
  • 网站前台怎么套用织梦后台万网如何上传静态网站
  • 贸易公司如何做网站只做绿色食品的网站
  • 一级域名的网站怎么做国内老牌的网站制作
  • 网站标题怎么设置免费制作主图的网站
  • net网站开发框架网络营销解释
  • 深圳企业网站公司wordpress侧边栏二级菜单
  • 网站建设完工报告网站开发晋升空间 路径
  • 网站模板 phpcmsiis7创建网站
  • 沧州网站域名注册服务公司网站关键词更改
  • 仿99健康网网站源码网站美化教程下载
  • 美的集团网站建设团购网站短信平台
  • 网站建设费用包括哪些方面做网站上面图片的软件
  • 合肥住房城乡建设部的网站智慧团建网站登录平台pc端
  • 网站建设 昆明 价格wordpress插件浏览权限