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. 1. mybatis 的入门实例

    mybatis 的入门实例 1.创建一个普通的Java项目 1.加入jar包(所有mybatis 和mysql) 2.加入配置文件 src 目录下 (1) db.properties mysql.us ...

  2. shiro入门实例,基于ini配置

    基于ini或者关系数据库的,其实都是一样的,重要的是思想. # ==================================================================== ...

  3. springmvc+spring+mybatis分页查询实例版本3,添加条件检索

    在第二个版本上添加了姓名模糊查询,年龄区间查询;自以为easy,结果发现mybatis的各种参数写法基本搞混或是忘了,zuo啊,直接上代码,然后赶紧把mybatis整理一遍再研究自己的项目,应该还会有 ...

  4. springmvc+spring+mybatis分页查询实例版本2.0

    先在改成纯利用js进行分页,首先查询出所有记录,初始化通过jquery控制只知显示首页内容,创建页面切换功能的函数,每次显示固定的内容行并把其他内容行隐藏,这样只需要一次提交就可以实现分页,但是仍有缺 ...

  5. springmvc+spring+mybatis分页查询实例版本1,ver1.0

    无聊做做看看,几乎没有怎么仔细做过这方面的,总是以为很简单,想想就会,实际做起来结合工作经验感觉还是挺有收获的,可以用在自己的项目上 第一版本思路:框架使用ssm,这个无所谓,采用分页语句查询指定页面 ...

  6. Apache Shiro入门实例

    Shiro是一个强大灵活的开源安全框架,提供身份验证.授权.会话管理.密码体系. 1.先创建一个Maven项目 2.配置pom <project xmlns="http://maven ...

  7. Spring Cloud 从入门到精通

    Spring Cloud 是一套完整的微服务解决方案,基于 Spring Boot 框架,准确的说,它不是一个框架,而是一个大的容器,它将市面上较好的微服务框架集成进来,从而简化了开发者的代码量. 本 ...

  8. 3.springMVC+spring+Mybatis整合Demo(单表的增删该查,这里主要是贴代码,不多解释了)

    前面给大家讲了整合的思路和整合的过程,在这里就不在提了,直接把springMVC+spring+Mybatis整合的实例代码(单表的增删改查)贴给大家: 首先是目录结构: 仔细看看这个目录结构:我不详 ...

  9. 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 ...

随机推荐

  1. Hexo博客NexT主题美化之评论系统

    前言 更多效果展示,请访问我的博客 https://kangmingxian.github.io/ 效果图:   image Valine 诞生于2017年8月7日,是一款基于Leancloud的快速 ...

  2. 题解 P2016 【战略游戏】

    题目 解法跟 dalao @real_ljs 类似,但没有用到递归 [分析] 题目相当于需要求覆盖这颗树需要的最小点数 用 \(Dp_{i,0/1}\) 表示在这棵树中,以 \(i\) 为根节点的子树 ...

  3. 一文彻底搞懂Cookie、Session、Token到底是什么

    > 笔者文笔功力尚浅,如有不妥,请慷慨指出,必定感激不尽 Cookie 洛:大爷,楼上322住的是马冬梅家吧? 大爷:马都什么? 夏洛:马冬梅. 大爷:什么都没啊? 夏洛:马冬梅啊. 大爷:马什 ...

  4. 201503-2 数字排序 Java

    思路: 将出现过的数以及次数放进Map中,转成List,用Comparator就可以排序了.参数中o2-o1,与排序规则相反,为降序 import java.util.ArrayList; impor ...

  5. python学习笔记-字符串的拼接

    1.百分号方式拼接 %[(name)][flags][width].[precision]typecode (name)      可选,用于选择指定的key flags          可选,可供 ...

  6. python使用进程池多进程时,如何打印错误信息

    一.说明 1.python进程池进行多进程运行时,如果有错误,该进程会直接跳过,并且不会打印错误信息. 2.如果需要了解到进程内的错误信息,此时就需要通过捕获异常来输出错误信息了. 二.具体方法如下: ...

  7. SVN解除与服务器的关联

    1.随便找个地方新建个文本文档 2.粘贴如下内容到文档里,建议使用notepad++ Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\ ...

  8. 题解【语文1(chin1)- 理理思维】

    link 喵~珂朵莉树AC 珂朵莉树?见此处~ 这数据结构太暴力了,所以不讲了 Code: #include<iostream> #include<cstdio> #inclu ...

  9. 第二个--关于led灯的代码总结

    又要继续奋斗啦,不然就交白卷了: 1---自己注意,就是那个板子上有8个led灯,这个灯呢,没哟甩端口直接控制模式用573锁存器来控制的,为的是啥呢,因为你的芯片就那么几个引脚  ,你就单单把引脚拿来 ...

  10. vitual box 虚拟机调整磁盘大小 resize partiton of vitual os

    key:vitual box, 虚拟机,调整分区大小 引用:http://derekmolloy.ie/resize-a-virtualbox-disk#prettyPhoto 1. 关闭虚拟机,找到 ...