springboot拦截器重定向_Spring Boot中使用Spring Security进行安全控制

我们在编写Web应用时,经常需要对页面做一些安全控制,比如:对于没有访问权限的用户需要转到登录表单页面。要实现访问控制的方法多种多样,可以通过Aop、拦截器实现,也可以通过框架实现(如:Apache Shiro、Spring Security)。

本文将具体介绍在Spring Boot中如何使用Spring Security进行安全控制。

准备工作

首先,构建一个简单的Web工程,以用于后续添加安全控制,也可以用之前Chapter3-1-2做为基础工程。若对如何使用Spring Boot构建Web应用,可以先阅读《Spring Boot开发Web应用》一文。

Web层实现请求映射

a4d5e8e6c95563ac8af428b62c5708ee.png
  • /:映射到index.html
  • /hello:映射到hello.html

实现映射的页面

  • src/main/resources/templates/index.html
8c5a2b758b1ee1fc9d81b4077edb6692.png
  • src/main/resources/templates/hello.html
107c414b84629fe54f0d775087178e12.png

可以看到在index.html中提供到/hello的链接,显然在这里没有任何安全控制,所以点击链接后就可以直接跳转到hello.html页面。

整合Spring Security

在这一节,我们将对/hello页面进行权限控制,必须是授权用户才能访问。当没有权限的用户访问后,跳转到登录页面。

添加依赖

在pom.xml中添加如下配置,引入对Spring Security的依赖。

3ae0f1ff43895747668b4066c2d4879a.png

Spring Security配置

创建Spring Security的配置类WebSecurityConfig,具体如下:

1d6e8fc04c4f37fe3f6113eefe53dde0.png
  • 通过@EnableWebSecurity注解开启Spring Security的功能
  • 继承WebSecurityConfigurerAdapter,并重写它的方法来设置一些web安全的细节
  • configure(HttpSecurity http)方法
  • 通过authorizeRequests()定义哪些URL需要被保护、哪些不需要被保护。例如以上代码指定了/和/home不需要任何认证就可以访问,其他的路径都必须通过身份验证。
  • 通过formLogin()定义当需要用户登录时候,转到的登录页面。
  • configureGlobal(AuthenticationManagerBuilder auth)方法,在内存中创建了一个用户,该用户的名称为user,密码为password,用户角色为USER。

新增登录请求与页面

在完成了Spring Security配置之后,我们还缺少登录的相关内容。

HelloController中新增/login请求映射至login.html

c95202f0659931ed59111a5fd4b24383.png

新增登录页面:src/main/resources/templates/login.html

54d21988dadec9e305dc353128bc88bc.png

可以看到,实现了一个简单的通过用户名和密码提交到/login的登录方式。

根据配置,Spring Security提供了一个过滤器来拦截请求并验证用户身份。如果用户身份认证失败,页面就重定向到/login?error,并且页面中会展现相应的错误信息。若用户想要注销登录,可以通过访问/login?logout请求,在完成注销之后,页面展现相应的成功消息。

到这里,我们启用应用,并访问http://localhost:8080/,可以正常访问。但是访问http://localhost:8080/hello的时候被重定向到了http://localhost:8080/login页面,因为没有登录,用户没有访问权限,通过输入用户名user和密码password进行登录后,跳转到了Hello World页面,再也通过访问http://localhost:8080/login?logout,就可以完成注销操作。

为了让整个过程更完成,我们可以修改hello.html,让它输出一些内容,并提供“注销”的链接。

351663d381d83cf038f38e69dcb0b011.png

本文通过一个最简单的示例完成了对Web应用的安全控制,Spring Security提供的功能还远不止于此,更多Spring Security的使用可参见Spring Security Reference。

71f4b6dfb79cdf153bd6c774838dadb2.png
SpringBoot实现登录拦截器 对于管理系统或其他需要用户登录的系统,登录验证都是必不可少的环节,在SpringBoot开发的项目中,通过实现拦截器来实现用户登录拦截并验证。 1、SpringBoot实现登录拦截的原理 2、代码实现及示例 3、 效果验证 ... 阅读详情

相关推荐

告别信号毛刺!手把手教你用ADS和IBIS-AMI模型搞定PCIe Gen3眼图仿真

本文详细介绍了如何使用Keysight ADS和IBIS-AMI模型进行PCIe Gen3眼图仿真,解决高速信号传输中的信号质量问题。从仿真环境搭建、S参数预处理到眼图优化与故障排除,提供了一套完整的工程实践指南,帮助工程师提升PCIe Gen3接口的信号完整性。

weixin_28366053的博客 360

springboot 访问html_Spring Boot中使用Spring Security进行安全控制

我们在编写Web应用时,经常需要对页面做一些安全控制,比如:对于没有访问权限的用户需要转到登录表单页面。要实现访问控制的方法多种多样,可以通过Aop、拦截器实现,也可以通过框架实现(如:Apache Shiro、Spring Security)。本文将具体介绍在Spring Boot中如何使用Spring Security进行安全控制。准备工作首先,构建一个简单的Web工程,以用于后续添加安全控制...

weixin_39777464的博客 838

数据中心机房设备标签规范建议

机房的维护工作中,标识管理是极其重要的一部分,从基本的线缆上跳接信息的标识,到设备、机柜标识规范的实施,不同程度的体现了标识管理的重要作用。本规范适用于机房主设备、线缆、机柜(含PDU插排)、仪器仪表、动力配套设备(各类空调、消防设备、配电柜、UPS等设备)、网络口、电源插座口的标签、标识规定。动力设备的设备编号、设备名称、生产厂商及厂商技术支持热线、设备型号、设备序列号、设备使用部门、设备责任人、设备启用时间及设备保修年限、条形码。各类标签、标识可根据设备和机柜的尺寸、大小进行调整。

有地气的强弱电小圈子 3521

Springboot 使用拦截器完成请求重定向

将HTTP请求地址重定向到请求体内传入的请求接口名。

weixin_42415751的博客 2753

TLSR8258蓝牙Mesh实战:从SDK下载到自定义通信指令全流程(附避坑指南)

本文详细介绍了TLSR8258蓝牙Mesh开发的完整流程,从SDK下载、环境搭建到自定义通信指令的实现。通过实战案例和避坑指南,帮助开发者快速掌握低功耗蓝牙Mesh网络构建技巧,适用于智能家居、工业监控等物联网场景。

weixin_29176179的博客 198

深入解析SOC芯片设计中DFT OCC与ATPG的协同优化策略

本文深入探讨了在复杂SOC芯片设计中,DFT(可测试性设计)的核心组件OCC(片上时钟控制器)与ATPG(自动测试向量生成)的协同优化策略。文章从基本原理出发,分析了OCC作为测试时钟管理者的关键作用,以及ATPG作为故障检测引擎的工作机制,并重点阐述了二者在测试架构选择、参数对齐、低功耗测试等场景下的协同方法与实战技巧,旨在实现更高的测试覆盖率与更低的测试成本。

efc123456的博客 1033

Spring Boot拦截请求进行重定向跳转

先引入spring-boot-starter-web配置,如下: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> 编写拦截处理handler package com.xpb.xpbweixin.config; import

动哒APP—运动健康科技提供商 1744

用Matlab和CVX搞定原子范数最小化:一个信号处理小白的避坑实践

本文详细介绍了如何使用Matlab和CVX实现原子范数最小化(Atomic norm minimization),特别适合信号处理初学者。从CVX安装配置、核心代码解析到实战中的典型问题与解决方案,提供了全面的避坑指南。通过具体案例展示了原子范数在频率估计和DOA估计中的优势,并给出性能优化策略和可视化方法。

weixin_28731231的博客 232

Spring boot自定义拦截器和拦截器重定向配置简单介绍~!

大家好:   本文简单介绍一下用于权限控制的Spring boot拦截器配置,拦截器重定向问题。 开发工具:jdk1.8 idea2017(付费版,网上找的破解教程) 1,首先使用idea创建一个Spring boot+jsp的简单项目,结构目录如下: 2.创建filter文件夹,在文件夹创建CheckFilter.java文件,继承拦截器基础接口HandlerInterce...

心有猛虎,是只大喵的博客 2288

Android应用之【巧妙隐藏桌面图标的进阶方案】

本文详细探讨了Android应用中隐藏桌面图标的进阶方案,解决了传统方法在Android 10及以上版本中出现的黑色图标残留问题。通过Intent-Filter配置和厂商适配技巧,实现子应用真正隐身,同时确保主应用正常启动。适用于企业工具套件、模块化系统等场景,提升用户体验和安全性。

weixin_28363123的博客 503

【系统分析师】2025年下半年真题:案例分析-答案及详解(回忆版)

Redis相比Memcached在电商高并发场景下具有显著优势:支持持久化(RDB/AOF)、丰富数据结构(如有序集合实现排行榜)、原生支持集群和哨兵模式(高可用性)。布隆过滤器通过位数组和哈希函数预先存储所有合法订单ID,当查询请求到达时快速拦截无效ID(如伪造ID),避免其穿透缓存直接冲击数据库,从而预防缓存击穿问题。

数据知道的博客 5981

SpringSecurity原理

SpringSecurity源码原理

onePlus5T的博客 1290

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

springboot 添加拦截器之后中文乱码_SpringBoot开发单体应用(二)

如果你还没看上一篇文章《SpringBoot开发单体应用(一)》,建议先去看一下。这篇文章是接着上一篇文章的内容来讲的。页面国际化国际化,英文名叫internationalization,因为中间有18个字母,又叫i18n。 我们平时工作或者开发一些网站时,尤其是国际网站,国际化是必须要做的事情。准备工作首先需要保证配置文件的编码格式是UTF-8,否则可能出现页面乱码的情况。选择File->...

weixin_36166752的博客 806

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

SpringBoot用户登陆拦截以及解决页面重定向问题

   SpringBoot的默认启动时,对资源拦截的控制台信息如下:2018-04-13 10:02:30.090 INFO 78908 --- [ restartedMain] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.spr...

u011972171的博客 3万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

SpringSecurity实现自定义登录页面

接着自定义用户名与密码后:https://blog.youkuaiyun.com/hjjjjjjj_/article/details/120235512 一、先创建登录页面 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>登录页面</title> </head> <body> <form action="/

初栀的博客 2620

postman测试 spring security登录返回登录html页面,不走登录流程的问题

今天翻到之前做的spring security的demo,在重新进行postman登录测试的时候,一直不走登录逻辑,而是返回登录的html页面。而因为前端使用Thymelef,在使用页面登录的时候,却发现能够登录成功,始终找不到原因。到最后虽然说解决了,但是解决的方法也很搞笑,即使说出来很丢人,但是也是一个法子。如果大家遇到这个问题,也是希望大家能够少走些弯路。 话不多说,直接上代码。 @Conf...

taiguolaotu的博客 9326

Spring Security无法跳转页面,一直在login.html页面

解决Spring Security无法跳转页面,一直在login.html页面的方法 在Spring Security中删除配置login-processing-url="/login.html"即可

egegerhn的博客 2199

springboot调用HTML文件注意事项

1.配置thymeleaf 2.HTML代码头部需要添加以下代码 <link rel="stylesheet" type="text/css" href="/static/css/style.css" th:href="@{css/style.css}"/> 其中th为 <html lang="en" xmlns:th="http://www.thymeleaf.org"> 3.关于controller和requestmapping @Controller /

qq_45904712的博客 662

无数次重定向?(SpringBoot添加拦截器)

用SpringBoot添加拦截器 Controller层用HttpServletReques的建立用户的会话状态 拦截器Interceptor。新建一个类实现HandleInterceptor,并且重写里面的方法 注册拦截器。新建一个子类继承WebMvcConfigurerAdapter,并且重写addInterceptors()方法。使我们的拦截器生效 controller requ...

L 941

Spring Boot Security + Vue 登录成功后重定向无 Access-Control-Allow-Origin 问题解决办法

需要明确: 已正确配置跨域资源共享(CORS)(不然也不可能看到登录成功了)。 已正确配置了跨站请求伪造(CSRF)(登录时需要携带 _csrf.token)。 全部使用 POST 提交的数据。 本文相关知识: MD5 加密与Spring Security 加密介绍。 注册时,使用 post 注册,已成功。 登录时,已经登录成功,效果如下: 前台查看axios响应: 说明:...

4944

spring boot-302重定向

文章目录302重定向1. 返回redirect2. HttpServletResponse重定向 302重定向 SpringBoot系列教程web篇之重定向 參考URL:https://www.cnblogs.com/yihuihui/p/11650078.html 1. 返回redirect 这种case通常适用于返回视图的接口,在返回的字符串前面添加redirect:方式来告诉Spring框架,需要做302重定向处理 @Controller @RequestMapping(path = "redirec

西京刀客 1万+

【解决】SpringBoot使用Security拦截双斜杠请求导致重定向过多的问题

问题描述:在上篇文章中,SpringSecurity拦截 // 导致报错 url 请求不合规范问题通过修改Security源码已解决, 但是又因为许多静态文件也带有 // 进行请求:test//test.css等,导致重定向次数过多 问题解决:使用拦截器对所有请求进行拦截,对 request 请求中的 url 进行重写 此处参考 spring security关于URL中包含双斜杠被权限拦截...

Damionew的博客 6839

SpringBoot——拦截器

四、需要将自己定义的拦截器注册到IOC容器中,进入我们自定义的配置类MyMvcConfig。需要注意的是登录请求/user/login不要忘记排除掉。内的全部方法,并没有给出任何的业务逻辑处理,这一点设计恰到好处的让我们不必去实现那些我们不用的方法,都交由。:在业务处理器处理请求之前被调用。抽象类空实现,如果我们需要针对具体的某一个方法做出逻辑处理,仅仅需要在。该抽象类其实里面没有任何的方法实现,只是空实现了接口。二、配置视图映射,新建配置类通过继承。请求的时候,也可以跳转至。方法,添加视图映射。

程序猿进阶 1636

springboot拦截器使用 登录拦截 重定向次数过多的解决方法

完成请求拦截也非常简单。思路和解决方案,代码以及重定向次数过多问题如下。 (1)对请求的url进行过滤,可以使用过滤器去实现IP黑白名单。(2)通过session的getAttribute()方法取对应属性进行非空判断,空的话进行拦截 (3)使用token方式进行请求权限认证 主讲第二种方法:场景为登录场景。先理清下思路。 什么时候进行拦截?(session为空时)。 怎么知道s...

weixin_42740540的博客 1万+

Spring Boot实战:拦截器

什么是拦截器:概念 :拦截器是Spring框架提供的核功能之, 主要来拦截的请求, 在指定法前后, 根据业务需要执预先设定的代码。也就是说, 允许开发员提前预定义些逻辑, 在的请求响应前后执. 也可以在请求前阻其执.在拦截器当中,开发员可以在应程序中做些通性的操作, 如通过拦截器来拦截前端发来的请求, 判断Session中是否有登录的信息. 如果有就可以放, 如果没有就进拦截.拦截器在SpringBoot中主要有以下几个作用:1.2拦截器的基本使用拦截器的使步骤分为两步:1.定义拦截器:实现HandlerI

李白 971
上一篇: pg通过自定义函数_Pgsql堆叠注入场景下通过`CREATE FUNCTION`来实现命令执行
下一篇: mysql 上云迁移方案_数据库上云迁移方案
羊牮
博客等级 码龄10年 43粉丝 286原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值