SpringSecurity6从入门到实战之SpringSecurity6自定义认证规则

SpringSecurity6从入门到实战之SpringSecurity6自定义认证规则

Spring Security 中默认所有的 http 请求都需要先认证通过后,才能访问。那么, 如何指定不需要认证就可以直接访问的资源呢?比如 用户的登录页面和注册页面,都是不需要认证就必须能被直接访问的。这就需要设置自定义的URL认证规则

SpringSecurity5.x自定义认证与6.x

# 在 SpringSecurity5.x中( 了解,已被废弃 )// 自定义配置类 继承 WebSecurityConfigurerAdapter 类覆盖 configure() 方法@Configurationpublic class WebSecurityConfigurer extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeHttpRequests().mvcMatchers("/hello").permitAll().anyRequest().authenticated().and().formLogin();}}
# 在 SpringSecurity6.x 中// 自定义配置类 使用注解 @EnableWebSecurity 配置 SpringSecurity

开发示例

创建一个新的controller

/test

package com.example.controller;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {@RequestMapping("/hello")public String hello() {System.out.println("/hello");return "hello...";}@RequestMapping("/test")public String test() {System.out.println("/test");return "test...";}
}

方便与/hello对比进行测试

根据SpringSecurity6.x自定义认证规则配置

新建MyWeSecurityConfig自定义配置类

package com.example.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.web.SecurityFilterChain;@Configuration
@EnableWebSecurity
public class MyWeSecurityConfig {@Beanpublic SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {//放行hello和testhttp.authorizeHttpRequests().requestMatchers("/hello", "test").permitAll()//所有请求都需要进行认证.anyRequest().authenticated()//进行表单登录验证.and().formLogin();return http.build();}
}

测试

image.png

image.png

结论

最终可以发现我们可以自定义认证规则,让例如注册等不需要认证的请求直接放行,让其他请求进行认证操作后再进行放行

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ramda函数式编程库--可以帮助处理不可变数据

ramda 介绍深拷贝与浅拷贝示例代码**使用 clone 函数****clone 函数也可以用来深拷贝数组:** 介绍 ramda 是一个功能强大的函数式编程库,可以帮助你处理不可变数据。 clone 是 ramda 中的一个函数,用于深拷贝对象或数组。以下是关于 clone 函…

内网管理软件IP-Guard实施方案

1. 引言 本方案旨在指导企业如何实施内网管理软件IP-Guard,通过服务器的安装、员工客户端的部署以及基本策略的定制,实现对企业内部网络的有效管理和监控。IP-Guard是一款集成了设备管控、数据防泄漏、日志审计等多种功能于一体的内网安全管理软件&…

【面试干货】深入理解Java中的final关键字

【面试干货】深入理解Java中的final关键字 一、被 final 修饰的类二、被 final 修饰的方法三、被 final 修饰的变量四、被 final 修饰的常量 💖The Begin💖点点关注,收藏不迷路💖 在Java中,final关键字有多种用途&…

C++ Primer 学习 -- Day 1

第 1、2 章知识点总结 1、Hello,World!1.1、输入输出1.2、while(std::cin >> value) 2、变量和基本类型2.1.1、unsigned建议 2.1.2 类型转换建议建议 2.2.1 变量定义提醒列表初始化提醒 2.2.2 变量声明和定义提醒 2.3.1 引用引用特点 2.3.2 指针指…

快人一步!利用LLM实现数据处理自动化

使用大型语言模型(LLM)来帮助处理数据具有以下几个主要优势: 1. 自动化处理 LLM能够自动处理大量的重复性任务,减少人工干预,从而提高数据处理效率。例如,它可以自动完成数据加载、预处理、筛选、去重和合并…

RV32F\RV32D指令集

RV32F\RV32D指令集 F扩展1、浮点控制状态寄存器2、指令类型F扩展 F扩展增加了32个浮点寄存器f0-f31,每个32位宽,以及一个浮点控制和状态寄存器fcsr,其中包含浮点单元的工作模式和异常状态。FLEN=32表示F单精度浮点扩展,大多数浮点指令对浮点寄存器中的值进行操作。浮点加载…

基于JSP技术的电子商城系统

开头语: 你好,我是计算机学长码农猫哥。如果你对电子商城系统感兴趣或有相关开发需求,欢迎联系我。 开发语言:Java 数据库:MySQL 技术:JSP技术 工具:Eclipse、Tomcat 系统展示 首页 管理…

08_基于GAN实现人脸图像超分辨率重建实战_超分辨基础理论

1. 超分辨的概念与应用 我们常说的图像分辨率指的是图像长边像素数与图像短边像素数的乘积,比如iPhoneX手机拍摄照片的分辨率为 4032px3024px,为1200万像素。 显然,越高的分辨率能获得更清晰的成像。与之同时,分辨率越高也意味着更大的存储空间,对于空间非常有限的移动设…

Spring IOC 容器的构建流程?

Spring loc (Inversion of Control) 是一种设计模式,其中对象的创建和依赖关系由框架管理,而不是由应用程序直接管理。Spring loc容器是Spring框架的核心,它使用loC模式来管理应用程序中的对象 Spring loC容器的构建过程如下: 1.配置元数据…

【Pytorch】一文向您详细介绍 torch.nn.DataParallel() 的作用和用法

【Pytorch】一文向您详细介绍 torch.nn.DataParallel() 的作用和用法 下滑查看解决方法 🌈 欢迎莅临我的个人主页 👈这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地!🎇 🎓 博主简介:985高…

[xmake]xmake常用命令

xmake:编译程序代码 xmake run:运行编译好的程序 xmake create hello:用 xmake 生成自带的 hello world 模板项目 xmake f -p windows:指定构建项目的目标平台为windows xmake f --toolchainclang:工具链切换为cla…

UnityAPI学习之延时调用(Invoke)

延时调用(Invoke) 当我们进行简单函数的延时调用不想使用协程时,我们可以使用Invoke()函数 using System.Collections; using System.Collections.Generic; using UnityEngine;public class NO15_Invoke : MonoBehaviour {//显示在每次生成…

计算机专业:选择、挑战与未来

随着2024年高考的落幕,众多学子面临着选择大学专业的重大抉择。在众多专业中,计算机相关专业一直是备受瞩目的热门选择。计算机科学与技术、人工智能、网络安全、软件工程等专业在过去几年中,凭借广阔的就业前景和应用领域,吸引了…

黑色格调qss

/*菜单*/ /*QMenu Start*/ QMenu { text-align: left; width: 246px; color: rgb(200, 200, 200); background-color: rgb(35, 35, 35); margin: 0px; padding: 0px; border: 1px solid rgb(100, 100, 100); font: 15px "Microsoft Yahei…

WARNING: pip is configured with locations that require TLS/SSL

在pycharm中运行pip下载软件包遇到该问题:WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available 原因:没有安装openssl; 到https://slproweb.com/products/Win32OpenSSL.ht…

Python实现逻辑回归与判别分析--西瓜数据集

数据 数据data内容如下: 读取数据: import numpy as np import pandas as pd data pd.read_excel(D:/files/data.xlsx) 将汉字转化为01变量: label [] for i in data[好瓜]:l np.where(i 是,1,0)label.append(int(l)) data[label] lab…

【unity笔记】一、常见技术名词解析(HDRP/URP)

一、简介 在Unity中,Shader是用于控制图形渲染过程中顶点和像素处理的程序。Shader通常用于定义物体在屏幕上呈现的外观,包括光照、纹理、颜色和其他视觉效果。Shader编写在特定的着色语言中,如HLSL(High-Level Shading Language…

计算机网络重要知识点

OSI 七层模型 是国际标准化组织提出的一个网络分层模型。 TCP/IP 四层模型 是目前被广泛采用的一种模型,我们可以将 TCP / IP 模型看作是 OSI 七层模型的精简版本,由以下 4 层组成: 应用层传输层网络层网络接口层 复杂的系统需要分层,因为每…

Vue中实现锚点滚动至指定区域

简介 本文将指导你如何使用Vue.js构建一个通过实现一个智能化的侧边栏导航功能,让用户能够一键跳转到不同类型的报告区域,大大提升操作便捷性。 项目背景 想象一下,你是xxxx科技有限公司的一名前端开发工程师,负责优化公司管理…

Parker派克驱动器C3M050D6F11I20F30M00S0

Parker派克驱动器C3M050D6F11I20F30M00S0 要想了解软盘和光盘中的信息,就必须把他们分别插入到软盘驱动器和光盘驱动器中,供计算机对上面的数据信息进行识别和处理。 软盘驱动器和光盘驱动器都位于机箱中,只把它们的"嘴巴"露在外面…