spring+mybatis+shiro入门实例
sql:
1 /*
2 SQLyog Ultimate v11.33 (64 bit)
3 MySQL - 5.1.49-community : Database - db_shiro
4 *********************************************************************
5 */
6
7
8 /*!40101 SET NAMES utf8 */;
9
10 /*!40101 SET SQL_MODE=''*/;
11
12 /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
13 /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
14 /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
15 /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
16 CREATE DATABASE /*!32312 IF NOT EXISTS*/`db_shiro` /*!40100 DEFAULT CHARACTER SET utf8 */;
17
18 USE `db_shiro`;
19
20 /*Table structure for table `t_permission` */
21
22 DROP TABLE IF EXISTS `t_permission`;
23
24 CREATE TABLE `t_permission` (
25 `id` int(11) NOT NULL AUTO_INCREMENT,
26 `permissionName` varchar(50) DEFAULT NULL,
27 `roleId` int(11) DEFAULT NULL,
28 PRIMARY KEY (`id`),
29 KEY `roleId` (`roleId`),
30 CONSTRAINT `t_permission_ibfk_1` FOREIGN KEY (`roleId`) REFERENCES `t_role` (`id`)
31 ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
32
33 /*Data for the table `t_permission` */
34
35 insert into `t_permission`(`id`,`permissionName`,`roleId`) values (1,'user:*',1),(2,'student:*',2);
36
37 /*Table structure for table `t_role` */
38
39 DROP TABLE IF EXISTS `t_role`;
40
41 CREATE TABLE `t_role` (
42 `id` int(11) NOT NULL AUTO_INCREMENT,
43 `roleName` varchar(20) DEFAULT NULL,
44 PRIMARY KEY (`id`)
45 ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
46
47 /*Data for the table `t_role` */
48
49 insert into `t_role`(`id`,`roleName`) values (1,'admin'),(2,'teacher');
50
51 /*Table structure for table `t_user` */
52
53 DROP TABLE IF EXISTS `t_user`;
54
55 CREATE TABLE `t_user` (
56 `id` int(11) NOT NULL AUTO_INCREMENT,
57 `userName` varchar(20) DEFAULT NULL,
58 `password` varchar(100) DEFAULT NULL,
59 `roleId` int(11) DEFAULT NULL,
60 PRIMARY KEY (`id`),
61 KEY `roleId` (`roleId`),
62 CONSTRAINT `t_user_ibfk_1` FOREIGN KEY (`roleId`) REFERENCES `t_role` (`id`)
63 ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
64
65 /*Data for the table `t_user` */
66
67 insert into `t_user`(`id`,`userName`,`password`,`roleId`) values (1,'java1234','123456',1),(2,'jack','123',2),(3,'marry','234',NULL),(4,'json','345',NULL);
68
69 /*Table structure for table `users` */
70
71 DROP TABLE IF EXISTS `users`;
72
73 CREATE TABLE `users` (
74 `id` int(11) NOT NULL AUTO_INCREMENT,
75 `userName` varchar(20) DEFAULT NULL,
76 `password` varchar(20) DEFAULT NULL,
77 PRIMARY KEY (`id`)
78 ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
79
80 /*Data for the table `users` */
81
82 insert into `users`(`id`,`userName`,`password`) values (1,'java1234','123456');
83
84 /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
85 /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
86 /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
87 /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
我们要实现的功能是针对不同用户允许其访问不同的资源。
用户表:

角色表:

权限表:

我们发现,用户java1234拥有admin的角色的user:*权限,用户jack拥有teacher的角色的student.*权限。marry和json用户无角色。
实例项目地址:git@github.com:zhaojiatao/shiroweb2.git
我们在spring配置文件中配置匹配规则:
1 <!-- Shiro过滤器 -->
2 <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
3 <!-- Shiro的核心安全接口,这个属性是必须的 -->
4 <property name="securityManager" ref="securityManager"/>
5 <!-- 身份认证失败,则跳转到登录页面的配置 -->
6 <property name="loginUrl" value="/index.jsp"/>
7 <!-- 权限认证失败,则跳转到指定页面 -->
8 <property name="unauthorizedUrl" value="/unauthor.jsp"/>
9 <!-- Shiro连接约束配置,即过滤链的定义 -->
10 <property name="filterChainDefinitions">
11 <value>
12 /login=anon
13 /admin*=authc
14 /student=roles[teacher]
15 /teacher=perms["user:create"]
16 </value>
17 </property>
18 </bean>
如上所示,访问admin路径需要身份认证通过即可。访问/student路径需要拥有teacher的角色。访问/teacher路径需要拥有user:create权限。
我们开启web服务,进入登录页面,登录不同的用户会发现shiro已经实现了权限验证。
spring+mybatis+shiro入门实例的更多相关文章
- 1. mybatis 的入门实例
mybatis 的入门实例 1.创建一个普通的Java项目 1.加入jar包(所有mybatis 和mysql) 2.加入配置文件 src 目录下 (1) db.properties mysql.us ...
- shiro入门实例,基于ini配置
基于ini或者关系数据库的,其实都是一样的,重要的是思想. # ==================================================================== ...
- springmvc+spring+mybatis分页查询实例版本3,添加条件检索
在第二个版本上添加了姓名模糊查询,年龄区间查询;自以为easy,结果发现mybatis的各种参数写法基本搞混或是忘了,zuo啊,直接上代码,然后赶紧把mybatis整理一遍再研究自己的项目,应该还会有 ...
- springmvc+spring+mybatis分页查询实例版本2.0
先在改成纯利用js进行分页,首先查询出所有记录,初始化通过jquery控制只知显示首页内容,创建页面切换功能的函数,每次显示固定的内容行并把其他内容行隐藏,这样只需要一次提交就可以实现分页,但是仍有缺 ...
- springmvc+spring+mybatis分页查询实例版本1,ver1.0
无聊做做看看,几乎没有怎么仔细做过这方面的,总是以为很简单,想想就会,实际做起来结合工作经验感觉还是挺有收获的,可以用在自己的项目上 第一版本思路:框架使用ssm,这个无所谓,采用分页语句查询指定页面 ...
- Apache Shiro入门实例
Shiro是一个强大灵活的开源安全框架,提供身份验证.授权.会话管理.密码体系. 1.先创建一个Maven项目 2.配置pom <project xmlns="http://maven ...
- Spring Cloud 从入门到精通
Spring Cloud 是一套完整的微服务解决方案,基于 Spring Boot 框架,准确的说,它不是一个框架,而是一个大的容器,它将市面上较好的微服务框架集成进来,从而简化了开发者的代码量. 本 ...
- 3.springMVC+spring+Mybatis整合Demo(单表的增删该查,这里主要是贴代码,不多解释了)
前面给大家讲了整合的思路和整合的过程,在这里就不在提了,直接把springMVC+spring+Mybatis整合的实例代码(单表的增删改查)贴给大家: 首先是目录结构: 仔细看看这个目录结构:我不详 ...
- springmvc+spring+mybatis+maven项目集成shiro进行用户权限控制【转】
项目结构: 1.maven项目的pom中引入shiro所需的jar包依赖关系 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...
随机推荐
- 线性可分支持向量机与软间隔最大化--SVM(2)
线性可分支持向量机与软间隔最大化--SVM 给定线性可分的数据集 假设输入空间(特征向量)为,输出空间为. 输入 表示实例的特征向量,对应于输入空间的点: 输出 表示示例的类别. 我们说可以通过间隔最 ...
- java反射修改静态方法的值setAccessible
这几天闲来无事.在网上看了一个题目,相信大家都知道这个题目 static void change(String str){ str="welcome"; ...
- zabbix自定义邮件报警
1.启动动作 2.设定发件人邮箱 进入QQ邮箱: 通过短信验证开启如下服务,并生成授权码: 3.配置收件人
- linux配置词典goldendict
在mint 18下使用通过, ubuntu 类似. 方法: 通过软件中心安装goldendict,或者 sudo apt install goldendict 通过网页抓取程序, 见附录 下载朗道词典 ...
- tensorflow C++接口调用目标检测pb模型代码
#include <iostream> #include "tensorflow/cc/ops/const_op.h" #include "tensorflo ...
- c指针(1)
#include<stdio.h> void swap(int *a,int *b); void dummy_swap(int *a,int *b); int main() { ,d=; ...
- 决策树分类回归,ID3,c4.5,CART,及其Python代码
决策树模型 内部节点表示一个特征或者属性,叶子结点表示一个类.决策树工作时,从根节点开始,对实例的每个特征进行测试,根据测试结果,将实例分配到其子节点中,这时的每一个子节点对应着特征的一个取值,如此递 ...
- scp 碰到的问题
将 nodejs 的全局目录scp复制到另外一台机器部署代码, 发现运行报错, 提示缺少依赖模块. 检查了很久, 没发现问题. 后来发现,软链接 scp后不再是软链接而是对应文件, 导致相对路径改变!
- Ubuntu18.04 离线安装 docker
Ubuntu18.04 离线安装 dockerhttps://blog.csdn.net/u012814856/article/details/804231851. 将下载下来的文件夹中的 4 个文件 ...
- winform上传文件,利用http,form-data格式上传
/// <summary> /// 上传文件 /// </summary> /// <param name="url">服务地址</par ...