Apache Shiro 是功能强大并且容易集成的开源权限框架,它能够完成认证、授权、加密、会话管理等功能。认证和授权为权限控制的核心,简单来说,“认证”就是证明你是谁!
Shiro 相关的教程有很多,但是网上大多数都是使用配置文件的形式进行dmeo样式,没有具体的结合数据库的例子。本系列文章将彻底的打破其他文章的一些规则,我们从数据库设计到整合 spring mvc,jdbc ,MyBatis等框架,完整的作出一套教程。希望大家喜欢!
本篇文章是这一系列教程文章的第一篇,我们先从数据库的设计开始实现。
用户表设计
DROP TABLE IF EXISTS `u_user`; CREATE TABLE `u_user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `nickname` varchar(20) DEFAULT NULL COMMENT '用户昵称', `email` varchar(128) DEFAULT NULL COMMENT '邮箱|登录帐号', `pswd` varchar(32) DEFAULT NULL COMMENT '密码', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `last_login_time` datetime DEFAULT NULL COMMENT '最后登录时间', `status` bigint(1) DEFAULT '1' COMMENT '1:有效,0:禁止登录', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT '用户表';
设计的比较简单,但是综合演示,已经够用。实际项目中自己在添加一些字段,视具体的需求而定。
角色表设计
DROP TABLE IF EXISTS `u_role`; CREATE TABLE `u_role` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(32) DEFAULT NULL COMMENT '角色名称', `type` varchar(10) DEFAULT NULL COMMENT '角色类型', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT '角色表';
这里面也添加了一个状态字段,用于在紧急情况下,禁止某一类用户做一些操作。这个功能常见于BAT公司中。例如国家发布一个正常,导致网盘非会员用户不能上传文件等。这个例子不是很恰当,但是实际的应用场景很是有的,不常见。
权限表设计
DROP TABLE IF EXISTS `u_permission`; CREATE TABLE `u_permission` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `url` varchar(256) DEFAULT NULL COMMENT 'url地址', `name` varchar(64) DEFAULT NULL COMMENT 'url描述', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT 'url权限表';
这里可以细粒度到具体的按钮操作。
用户角色表设计
DROP TABLE IF EXISTS `u_user_role`; CREATE TABLE `u_user_role` ( `uid` bigint(20) DEFAULT NULL COMMENT '用户ID', `rid` bigint(20) DEFAULT NULL COMMENT '角色ID' ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '角色权限表';
角色权限表设计
DROP TABLE IF EXISTS `u_role_permission`; CREATE TABLE `u_role_permission` ( `rid` bigint(20) DEFAULT NULL COMMENT '角色ID', `pid` bigint(20) DEFAULT NULL COMMENT '权限ID' ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '角色权限表';
到这里,数据库我们就设计完成,再下一章我们将进行 Shiro 教程的实战开发,框架搭建的阶段。
: » 开源权限框架 Shiro 整合 web 项目的数据库设计
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/java/251498.html