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就可以了,同时实现两个抽象方法

发布了151 篇原创文章 · 获赞 110 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/qq_35564813/article/details/104721577