Apache Shiro

  • 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没有参数表示必须存在用户,当登入操做时不作检查  
相关文章
相关标签/搜索