springboot整合shiro之——拦截路径

简介Shiro:

1.基本功能

        身份认证、授权、加密、会话管理

        Web支持、缓存、多线程、测试、允许一个用户假装为另一个用户的身份进行访问、记住我

2. 执行过程

分为五步:

  • Subject

    用户主体:请求的发起者,即访问应用的用户

  • Security Manager

    安全管理器:Shiro的核心,用来分发请求,对Shiro中的其他对象进行管理

  • Authenticator

    认证器:用来进行认证操作

  • Authentication Strategy

    认证策略 :对于多个realm,可以对认证realm的个数进行配置

    三种认证策略:AtLeastOneSuccessfulStrategy、FirstSuccessfulStrategy、AllSuccessfulStrategy

  • Realm

    安全数据源:用来进行数据匹配的,可以通过多种数据源进行匹配认证,如文件、数据库、QQ、微信、手机号等

3. url过滤

场景:有些url的访问需要登录才能访问,如后台管理界面,未登录时不允许访问,自动跳转到登录页面

解决:使用Shiro过滤器,配置url过滤规则

常用的过滤规则:

  • anon 表示url不需要验证

  • authc 表示url需要登录验证,如果未登录,默认跳转到/login.jsp,参考FormAuthenticationFilter类

  • roles 表示url需要角色验证

  • perms 表示url需要权限验证

  • logout 配置url实现退出登录

注:默认所有url都不需要验证,相当于是anon

应用spring boot实例:

创建一个springboot项目添加依赖:Lombok、Web

<!--jsp-->
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
</dependency>

注意:一定要配置jsp的依赖包,否则,在浏览器中访问jsp界面,默认访问文件(下载),不能解析为浏览器dom元素 

 配置properties.yml

server:
  port: 8080
  servlet:
    context-path: /shiro

spring:
  mvc:
    view:
      prefix: /
      suffix: .jsp

在webapp文件夹中创建index.jsp和login.jsp

要求webapp要与resource为同级

编写自定义数据源Realm:

/**
 * 自定义Realm ,继承AuthorizingRealm
 */
public class ShiroRealm extends AuthorizingRealm {

    /**
     * 认证
     * Authentication 证明真实性,鉴定;身份验证
     */
    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
        return null;
    }

    /**
     * 授权
     * Authorization 批准书,授权书;批准
     */
    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
        return null;
    }
}

编写shiro配置:

@Configuration
public class ShiroConfig {

    /**
     *  获得认证的数据源
     *  realm 领域、范围
     *  @return
     */
    @Bean
    public Realm getRealm() {
        ShiroRealm realm = new ShiroRealm();
        return realm;
    }

    /**
     * 创建安全管理器 类似于: 自定义XXService
     * 自定义的Realm交给SecurityManager管理
     * @param realm
     * @return
     */
    @Bean
    public DefaultWebSecurityManager getDefaultWebSecurityManager(Realm realm) {
        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
        securityManager.setRealm(realm);
        return securityManager;
    }

    /**
     * ShiroFilter ,对资源进行过滤处理
     * 将SecurityManager交给ShiroFilterFactoryBean管理
     * @param securityManager
     * @return
     */
    @Bean
    public ShiroFilterFactoryBean getShiroFilterFactoryBean(DefaultWebSecurityManager securityManager) {
        ShiroFilterFactoryBean filterFactoryBean = new ShiroFilterFactoryBean();
        //设置过滤路径 anon 默认 authc 认证 roles perms 授权 logout 退出
        Map<String,String> map = new LinkedHashMap<>();
        map.put("/index.jsp","authc");
        map.put("/login.jsp","anon");
        //设置安全管理器
        filterFactoryBean.setSecurityManager(securityManager);
        filterFactoryBean.setFilterChainDefinitionMap(map);
        filterFactoryBean.setLoginUrl("/login.jsp");
        return filterFactoryBean;
    }
}

运行程序:

输入网址:http://localhost:8080/shiro/index.jsp

回车之后(成功被拦截到login.jsp):

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/537702.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在一台恢复测试机器上验证oracle备份有效性

一 目的 定期将生产环境oracle数据库恢复到一台测试环境数据库服务器上&#xff0c;以验证备份是否有效&#xff0c;是否能正常恢复。 二 环境 这里以恢复orcl1库为例&#xff0c;计划在orcl这个实例上进行恢复测试。 三 实验步骤 3.1 在目标端创建和源端一样的备份目录 ①…

公众号小程序二合一分销商城源码系统 带完整的安装代码包以及搭建教程

互联网的快速发展&#xff0c;微信小程序和公众号成为了企业推广与营销的重要工具。为了更好地满足企业的需求&#xff0c;罗峰给大家分享一款公众号小程序二合一分销商城源码系统&#xff0c;该系统集成了小程序和公众号的双重功能&#xff0c;旨在为企业提供更加便捷、高效的…

SpringMVC:搭建第一个web项目并配置视图解析器

&#x1f449;需求&#xff1a;用spring mvc框架搭建web项目&#xff0c;通过配置视图解析器达到jsp页面不得直接访问&#xff0c;实现基本的输出“hello world”功能。&#x1f469;‍&#x1f4bb;&#x1f469;‍&#x1f4bb;&#x1f469;‍&#x1f4bb; 1 创建web项目 1…

数字IC/FPGA——锁存器/触发器/寄存器

本文主要介绍以下几点&#xff1a; 什么是触发器和锁存器门电路和触发器的区别什么是电平钟控触发器电平钟控触发器触发器和锁存器的区别触发器的分类方式&#xff1a;逻辑功能、触发方式、电路结构、存储数据原理、构成触发器的基本器件寄存器利用移位寄存器实现串并转换或并…

采集主机环境业务日志最佳实践

前言 随着信息技术的飞速发展&#xff0c;主机环境业务越来越复杂&#xff0c;产生的日志数据也呈爆炸式增长。日志数据作为记录系统运行状态、用户行为以及异常事件的重要信息&#xff0c;对于业务分析、故障排查和安全审计等方面具有不可替代的作用。然而&#xff0c;传统的…

简洁易用的记账小程序——微点记账 增加一个新功能

文章目录 背景功能介绍水印相机首页介绍所需权限水印相机功能定位切换拍摄闪光分享 总结 背景 前面已经介绍过了这个小 程 序——微点记账 最近有朋友反馈&#xff0c;能不能出一个水印相机的小程序&#xff1f;很想为小伙伴分忧&#xff0c;但是鉴于小 程 序也需要备 案&…

2024妈妈杯数学建模B题思路-甲骨文智能识别中原始拓片单字自动分割与识别研究

# 1 赛题 B 题 甲骨文智能识别中原始拓片单字自动分割与识别研究 甲骨文是我国目前已知的最早成熟的文字系统&#xff0c;它是一种刻在龟甲或 兽骨上的古老文字。甲骨文具有极其重要的研究价值&#xff0c;不仅对中国文明的 起源具有重要意义&#xff0c;也对世界文明的研究有着…

避坑指南: “低代码开发平台”怎么选看这篇!附案例参考

从事TOB行业 9 年&#xff0c;深入体验过 10 余款低代码产品。 下面基于我的个人认知给大家讲一讲&#xff1a; 低代码开发平台该如何选&#xff1f;从哪些维度可以判断低代码平台适合你的企业&#xff1f;多家企业采用低代码平台的实践案例&#xff01; 目前市面上有超过 2…

大数据dolphinscheduler 本地容器化安装

Minio 容器安装 docker run -p 9000:9000 -p 9090:9090 --name minio -d -e "MINIO_ACCESS_KEYminioadmin" -e "MINIO_SECRET_KEYminioadmin" -v D:\SF\DOCKER\minio\data:/data -v D:\SF\DOCKER\minio\config:/root/.minio minio/minio server /da…

LeetCode---392周赛

题目列表 3105. 最长的严格递增或递减子数组 3106. 满足距离约束且字典序最小的字符串 3107. 使数组中位数等于 K 的最少操作数 3108. 带权图里旅途的最小代价 一、最长的严格递增或递减子数组 按照题目要求进行模拟即可&#xff0c;这里提供两者思路&#xff1a; 1、两次…

AI赋能校园管理,打造平安智慧校园解决方案

背景&#xff1a; 2020年教育部办公厅印发《教育系统安全专项整治三年行动实施方案》&#xff0c;文中要求&#xff0c;学校在所辖范围内组织开展安全专项整治三年行动&#xff0c;健全完善安全责任体系&#xff0c;建立风险管控和隐患治理的安全防控体系&#xff0c;开展消防等…

tRPC架构设计简单理解

互联网发展早期&#xff0c;业务场景差异大&#xff0c;试错迭代速度很快。这导致其后台服务使用的语言技术栈、开发框架、通信协议、服务治理系统、运维平台等或多或少存在差异。 业务发展到一定阶段后&#xff0c;跨业务合作越来越多&#xff0c;组织架构调整也愈发频繁。技…

局域网管理软件哪个好?局域网电脑管理系统实践案例

之前有一个公司案例&#xff0c;是这样的&#xff1a; 公司名称&#xff1a;智慧科技有限公司 背景&#xff1a; 智慧科技有限公司是一家拥有数百名员工的中型企业&#xff0c;随着业务的快速发展&#xff0c;公司面临着网络管理上的挑战。 员工在日常工作中需要频繁地访问…

旧版本jquery升级新版本后如何处理兼容性问题

前言 最近项目在漏洞扫描过程中发现现在的jquery版本受多个跨站点脚本漏洞影响&#xff0c;需要升级jquery版本。 1、首先下载高版本的jquery&#xff0c;我这里升级的是3.6.0 2、对应的bootstrap版本也要升级&#xff0c;这里升级的是3.3.7 本来以为替换完这两个文件后&#…

【SpringBoot】-- 使用minio对象存储服务实现上传图片

目录 一、安装minio 拉取镜像 启动 查看 进入登录页面 创建bucket 二、安装miniomc 三、代码 application.yml MinioUtil Controller 四、拓展 以下基于云服务和docker使用minio服务 一、安装minio Minio 是一个开源的对象存储服务器。它允许用户在私有云环境中建…

全闪存储阵列利用 U.2NVMe技术实现高性能体验

U.2 NVMe全闪存储阵列日益成为全闪存储的主流&#xff0c;以Infortrend普安科技最新推出GS 5000U为例。作为GS 5000U系列首发机型&#xff0c;GS 5024UE全面升级&#xff0c;搭载第五代IntelXeon处理器&#xff0c;支持PCIe 5.0、NVMe-OF、100GbE&#xff0c;带宽性能比之前的旗…

cPanel如何远程MySQL

本周有一个客户&#xff0c;购买Hostease的HK Basic Linux虚拟主机&#xff0c;询问我们的在线客服&#xff0c;主机是否支持远程访问MySQL及如何配置的问题。我们为用户提供教程&#xff0c;用户很快完成了设置。在此&#xff0c;我们分享这个操作教程&#xff0c;希望可以对您…

[2024]最新激活Navicat教程附激活码

PS&#xff1a;在开始前&#xff0c;建议先断开本地网络&#xff01;&#xff01;&#xff01;建议先断开本地网络&#xff01;&#xff01;&#xff01;建议先断开本地网络&#xff01;&#xff01;&#xff01; 1 安装 1.1 点击下一步 1.2 许可证选择“我同意”&#xff0c…

Fastgpt配合chatglm+m3e或ollama+m3e搭建个人知识库

概述&#xff1a; 人工智能大语言模型是近年来人工智能领域的一项重要技术&#xff0c;它的出现标志着自然语言处理领域的重大突破。这些模型利用深度学习和大规模数据训练&#xff0c;能够理解和生成人类语言&#xff0c;为各种应用场景提供了强大的文本处理能力。AI大语言模…

redis 数据迁移到rds2214(TongRDS-2.2.1.3.Load版 by lqw)

​ 文章目录 一.备份redis文件 vi redis.conf &#xff0c;看看有没有这两行设置&#xff0c;有的话改成跟下面的一致&#xff1a; appendonly yes appendfilename “appendonly.aof” 之后连接redis客户端&#xff0c;输入INFO persistence&#xff0c;如图所示即为开启成功…