shiro基础知识记录

Shiro

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

ShiroFilter的工作原理

在这里插入图片描述

DelegatingFilterProxy 作用是自动到 Spring 容器查找字为 shiroFilter(filter-name)的 bean 并把所有 Filter 的操作委托给它。所以web.xml和spring 容器中的filter-name应该一样。

URL匹配模式

Ant 路径通配符支持 ?、*、**,注意通配符匹配不 包括目录分隔符“/”:

– ?:匹配一个字符,如 /admin? 将匹配 /admin1,但不 匹配 /admin 或 /admin/;

– *:匹配零个或多个字符串,如 /admin*将匹配/admin、 /admin123,但不匹配 /admin/1;

–** :匹配路径中的零个或多个路径,如 /admin/** 将匹 配 /admin/a 或 /admin/a/b

URL匹配顺序

URL 权限采取第一次匹配优先的方式,即从头开始 使用第一个匹配的 url 模式对应的拦截器链。

身份认证思路

  1. 获取当前的subject,调用SecurityUtils.getSubject();
  2. 测试当前的用户是否已经被认证,即是否已经登录,调用subject的isAuthenticated()
  3. 若没有被认证,则把用户名和密码封装为UsernamePasswordToken对象
    1. 创建一个表单页面
    2. 把请求提交到Springmvc的Handler
    3. 获取用户名和密码
  4. 执行登录:调用subject的login(AuthenticationToken)方法。
  5. 自定义Realm的方法,从数据库中获取对应的记录,返回给shiro。
    1. 实际上需要继承org.apach.shiro.realm.AuthenticatingRealm类
    2. 实现doGetAuthenticationInfo(AuthenticationToken)方法。
  6. 由shiro完成对密码的比对。

密码的比对:

通过AuthenticatingRealm的credentialsMatcher属性来进行的密码比对。

  • 如何把一个字符串加密为MD5

替换当前的Realm的credentialsMatcher属性,直接使用HashedCredentialsMatcher对象,并设置加密算法即可。

实现认证Realm步骤

在这里插入图片描述

实现授权

  1. 授权需要继承AuthorizingRealm类,并实现其doGetAuthorizationInfo方法。

  2. AuthorizingRealm类继承自AuthenticatingRealm,但没有实现AuthenticatingRealm中的doGetAuthenticationInfo,所以认证和授权只需要继承

    AuthorizingRealm就可以了,同时实现两个抽象方法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值