- Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、受权、密码学和会话管理。
- 使用Shiro的易于理解的API,您能够快速、轻松地得到任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。
Shiro 主要分为来个部分就是认证和受权,mysql
- 在我的感受来看就是查询数据库作相应的判断而已,
- Shiro只是一个框架而已,其中的内容须要本身的去构建,先后是本身的,中间是Shiro帮咱们去搭建和配置好的
- 我的认为须要看一下其中的一些源码,更有帮助的深刻的去了解Shiro的原理。
Shiro有三大核心组件:sql
Subject:即当前用户数据库
- 在权限管理的应用程序里每每须要知道谁可以操做什么,谁拥有操做该程序的权利,shiro中则须要经过Subject来提供基础的当前用户信息
- 全部的Subject都要绑定到SecurityManager上,与Subject的交互其实是被转换为与SecurityManager的交互。
SecurityManager:即全部Subject的管理者安全
- 这是Shiro框架的核心组件,能够把他看作是一个Shiro框架的全局管理组件,用于调度各类Shiro框架的服务。
- 做用相似于SpringMVC中的DispatcherServlet,用于拦截全部请求并进行处理。
Realm:Realm是用户的信息认证器和用户的权限人证器网络
- 咱们须要本身来实现Realm来自定义的管理咱们本身系统内部的权限规则。
- SecurityManager要验证用户,须要从Realm中获取用户。
- 能够把Realm看作是数据源。
编写shiro配置文件
- 在resources目录下编写shiro配置文件,shiro.ini

Shiro+MySQL动态权限验证
- 在resources文件夹下建立配置文件shiro-mysql.ini:

- 注意sql语句,每次只查询一个shiro要求查询的字段,若是写select *就会报错了。
- ini配置文件要求必须是key=value的形式,
- 若是有些人没有设置数据库的密码,就不要写对应的配置。
- 只写”dataSource.password=”等号右面没有值会报错。

其权限过滤器及配置释义:框架
- anon:
- 例子/admins/**=anon 没有参数,表示能够匿名使用。
- authc:
- 例如/admins/user/**=authc表示须要认证(登陆)才能使用,没有参数
- roles(角色):
- 例子/admins/user/**=roles[admin],参数能够写多个,参数之间用逗号分割,当有多个参数时,例如admins/user/**=roles["admin,guest"],每一个参数经过才算经过,至关于hasAllRoles()方法。
- perms(权限):
- 例子/admins/user/**=perms[add],参数能够写多个,例如/admins/user/**=perms["add, modify"],当有多个参数时必须每一个参数都经过才经过,想当于isPermitedAll()方法。
- rest:
- 例子/admins/user/**=rest[user],根据请求的方法,至关于/admins/user/**=perms[user:method] ,其中method为post,get,delete等。
- port:
- 例子/admins/user/**=port[8081],当请求的url的端口不是8081是跳转到schemal://serverName:8081?queryString,其中schmal是协议http或https等,serverName是你访问的host,8081是url配置里port的端口,queryString是你访问的url里的问号(?)后面的参数。
- authcBasic:
- 例如/admins/user/**=authcBasic没有参数.表示httpBasic认证
- ssl:
- 例子/admins/user/**=ssl没有参数,表示安全的url请求,协议为https
- user:
- 例如/admins/user/**=user没有参数表示必须存在用户,当登入操做时不作检查