Shiro

1.shiro的基本概念

  • application code:应用程序代码,代表shiro的程序入口。将用户的数据用shiro的api传递到shiro,由shiro处理数据。
  • subject:每一个subject代表一个用户。用shiro对用户数据进行封装,把数据给token(账号和密码生成令牌)
  • securitymanager:安全中心,所有的数据都会经过安全中心,对用户进行管理
  • realm:域,连接的数据源头,可以是数据库,也可以是文件
    shiro

2. shiro快速开始

2.1 官方quickstart里面的重要方法

  • 获取当前用户对象subject
  • 通过当前用户拿到session
  • 判断当前用户是否被认证
  • 获取当前用户的认证
  • 判断该用户是否拥有某个角色
  • 获取当前用户的权限
    shiro架构图

3. springboot整合shiro

3.1 具体操作

  • 创建项目并编写Controller进行测试
  • 导入shiro-spring依赖
  • 编写shiroconfig(三大对象)

4. shiroconfig的编写

4.1 三大对象

  • ShiroFilterFactoryBean
  • DefaultWebSecurityManager
  • 自定义realm对象

4.2 自定义realm对象

  • 创建UserRealm对象继承AuthorizingRealm方法
  • 实现认证与授权方法
  • 在shiroconfig中注入spring

4.3 创建DefaultWebSecurityManager管理器,将realm丢进去与之关联

4.4 创建ShiroFilterFactoryBean管理模式,将DefaultWebSecurityManager管理器丢进去,设置安全管理器

4.5 编写add与update界面

正确的Themeleleaf命名空间才会有th标签的提示

<html lang="en" xmlns:th="http://www.thymeleaf.org">

5. shiro实现登录拦截

5.1 添加shiro的内置过滤器

  • anon:无需认证就可以访问
  • authc:必须认证才能访问
  • user:必须拥有记住我功能才能访问
  • perms:拥有对某个资源的权限才能访问
  • role:拥有某个角色权限才能访问

配置过滤器时支持通配符

5.2 设置登录的请求

  • 被拦截以后跳转到登录页面login

6. shiro实现用户认证

  • 获取当前用户
  • 封装当前用户登录信息,用户名密码作为token
  • 执行登录方法,传入token令牌
  • 在realm里面获取令牌信息对用户名密码进行判断
  • 登录没有异常则登录成功

authc认证方法里面自带了多种异常,用户名错误、密码错误etc
用户名自己判断,密码shiro进行判断
自定义数据模拟测试

7. shiro整合mybatis

  • 连接数据库配置yml文件
  • mapper、mapper.xml、service、serviceImpl (Test测试)
  • 测试成功后将realm中手动模拟的数据跟换为数据库中的数据

8. shiro实现请求授权

type=Unauthorized, status=401(401表示未授权错误)
没有授权则无妨访问网页,例如登录成功后才能访问其他网页
根据数据库中不同用户的权限信息访问不同的功能

8.1 授权操作(shiroconfig文件)

  • 与拦截相似put是采用perms,表示拥有对某个资源的权限才能访问
  • 编写未授权Controller,没有授权时返回提示信息
  • 在userrealm里面可以添加需要授权的信息,授权过后就可以访问了(手动模拟权限信息)
  • 在数据库中创建perms属性,作为权限信息(从数据库获取权限信息)
  • 从数据库中获取权限信息,设置用户的权限

9. shiro整合Themeleleaf(与springsecurity的包类似一样)

  • 编写themele-shiro pom文件
  • shiroconfig配置shirodialect,整合Themeleleaf与shiro
  • 结合后进行判断有那个权限就显示那个按钮

个人感觉还是springsecurity好用一些,但是shiro的可定制化比较高
shirodemo代码地址:shiro小demo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值