在spring boot中整合security

简介: 这几天通过视频整合了security,遇到了几个细节,和大家分享一下

这几天通过视频整合了security,遇到了几个细节,和大家分享一下

1、在thymeleaf页面引用sec标签的问题,一开始,因为我在pom文件中导入的是

<dependency>

            <groupId>org.thymeleaf.extras</groupId>

            <artifactId>thymeleaf-extrasspringsecurity5</artifactId>

            <version>3.0.4.RELEASE</version>

</dependency>

在thymeleaf页面引用的是

xmlns:sec="http://www.thymeleaf.org/extras/spring-security5">

然后到页面中,其他倒是没错,但是sec标签不起作用,我找了好久,包括把引用和导入的都改成4,还是没有用,最后,突然找到,不管pom文件中导入什么,只要在thymeleaf页面引用

xmlns:sec="http://www.thymeleaf.org/extras/spring-security">

还是有点开心的,突然觉得自己还是有一点小笨


2、在定制认证规则的时候,通过重写 configure(AuthenticationManagerBuilder auth)方法定制规则,一开始我很直接,像这样:

//定制认证规则     @Override     protected void configure(AuthenticationManagerBuilder auth) throws Exception {         //super.configure(auth);               auth.inMemoryAuthentication().withUser("zhangsan").password("123456").roles("VIP1","VIP2").and().withUser("lisi").password("123456").roles("VIP3","VIP2").and().withUser("wangwu").password("123456").roles("VIP1","VIP3");

}

结果控制台一直报错,也是通过百度,搜索了一下

原因:从spring security 5.X开始,需要使用密码编码器,也就是需要对你的明文密码进行加密,而不NoAppasswordEncoder(无密码编码器)


有三种解决方法

1、

//办法一:        //1.1 使用BCryptPasswordEncoder()        auth            .inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder())                .withUser("zhangsan").password(new BCryptPasswordEncoder().encode("123456")).roles("VIP1","VIP2")                .and()                .withUser("lisi").password(new BCryptPasswordEncoder().encode("123456")).roles("VIP3","VIP2")                .and()                .withUser("wangwu").password(new BCryptPasswordEncoder().encode("123456")).roles("VIP1","VIP3");


2、

//1.2 使用Pbkdf2PasswordEncoder()/        auth.inMemoryAuthentication().passwordEncoder(new Pbkdf2PasswordEncoder())              .withUser("zhangsan").password(new Pbkdf2PasswordEncoder().encode("123456")).roles("VIP1","VIP2")               .and()               .withUser("lisi").password(new Pbkdf2PasswordEncoder().encode("123456")).roles("VIP3","VIP2")               .and()                .withUser("wangwu").password(new Pbkdf2PasswordEncoder().encode("123456")).roles("VIP1","VIP3");


3、 自定义PasswordEncoders,需要实现PasswordEncoder 接口,这个就不写了,我用的是第一个。

      暂时就这样。。

相关文章
|
7天前
|
JSON 安全 Java
Spring Security 6.x 微信公众平台OAuth2授权实战
上一篇介绍了OAuth2协议的基本原理,以及Spring Security框架中自带的OAuth2客户端GitHub的实现细节,本篇以微信公众号网页授权登录为目的,介绍如何在原框架基础上定制开发OAuth2客户端。
25 4
Spring Security 6.x 微信公众平台OAuth2授权实战
|
10天前
|
存储 安全 Java
Spring Security 6.x OAuth2登录认证源码分析
上一篇介绍了Spring Security框架中身份认证的架构设计,本篇就OAuth2客户端登录认证的实现源码做一些分析。
37 2
Spring Security 6.x OAuth2登录认证源码分析
|
14天前
|
安全 Java 数据安全/隐私保护
Spring Security 6.x 一文快速搞懂配置原理
本文主要对整个Spring Security配置过程做一定的剖析,希望可以对学习Spring Sercurity框架的同学所有帮助。
46 5
Spring Security 6.x 一文快速搞懂配置原理
|
11天前
|
安全 Java API
Spring Security 6.x 图解身份认证的架构设计
【6月更文挑战第1天】本文主要介绍了Spring Security在身份认证方面的架构设计,以及主要业务流程,及核心代码的实现
21 1
Spring Security 6.x 图解身份认证的架构设计
|
11天前
|
安全 前端开发 Java
CSRF 攻击以及如何使用 Spring Security 预防攻击
【6月更文挑战第15天】CSRF 是指跨站请求伪造,是 Cross-site request forgery 的简称,有些地方也简写为 XSRF。
367 1
|
13天前
|
安全 前端开发 Java
Spring Security 6.x 过滤器链SecurityFilterChain是如何工作的
上一篇主要介绍了Spring Secuirty中的过滤器链SecurityFilterChain是如何配置的,那么在配置完成之后,SecurityFilterChain是如何在应用程序中调用各个Filter,从而起到安全防护的作用,本文主要围绕SecurityFilterChain的工作原理做详细的介绍。
52 0
Spring Security 6.x 过滤器链SecurityFilterChain是如何工作的
|
18天前
|
安全 Java 测试技术
Spring Security应用中的部分代码示例2
【6月更文挑战第12天】Spring Security应用中的部分代码示例2
26 5
|
16天前
|
存储 安全 Java
详解 Spring Security:全面保护 Java 应用程序的安全框架
详解 Spring Security:全面保护 Java 应用程序的安全框架
37 1
|
18天前
|
安全 Java 数据库
Spring Security应用代码示例
【6月更文挑战第12天】Spring Security应用代码示例
25 3
|
23天前
|
JSON 安全 Java
Java一分钟之-Spring Security:身份验证与授权
【6月更文挑战第7天】本文介绍了Spring Security的常见问题及解决方案,包括配置启动、身份验证、授权、无状态JWT和异常处理。通过`@EnableWebSecurity`启动安全框架,自定义登录页面和登录逻辑,使用`http.authorizeRequests()`设置访问规则。对于JWT,需添加解析器并注册过滤器。此外,处理Spring Security异常,创建自定义的`AccessDeniedHandler`和`AuthenticationEntryPoint`。理解核心概念并按业务需求定制,是确保应用安全的关键。
25 1