在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 接口,这个就不写了,我用的是第一个。

      暂时就这样。。

相关文章
|
4月前
|
安全 Java 数据安全/隐私保护
使用Spring Security实现细粒度的权限控制
使用Spring Security实现细粒度的权限控制
|
4月前
|
安全 Java 数据库
实现基于Spring Security的权限管理系统
实现基于Spring Security的权限管理系统
|
4月前
|
安全 Java 数据安全/隐私保护
解析Spring Security中的权限控制策略
解析Spring Security中的权限控制策略
|
5月前
|
JSON 安全 Java
Spring Security 6.x 微信公众平台OAuth2授权实战
上一篇介绍了OAuth2协议的基本原理,以及Spring Security框架中自带的OAuth2客户端GitHub的实现细节,本篇以微信公众号网页授权登录为目的,介绍如何在原框架基础上定制开发OAuth2客户端。
202 4
Spring Security 6.x 微信公众平台OAuth2授权实战
|
5月前
|
存储 安全 Java
Spring Security 6.x OAuth2登录认证源码分析
上一篇介绍了Spring Security框架中身份认证的架构设计,本篇就OAuth2客户端登录认证的实现源码做一些分析。
228 2
Spring Security 6.x OAuth2登录认证源码分析
|
5月前
|
安全 Java 数据安全/隐私保护
Spring Security 6.x 一文快速搞懂配置原理
本文主要对整个Spring Security配置过程做一定的剖析,希望可以对学习Spring Sercurity框架的同学所有帮助。
259 5
Spring Security 6.x 一文快速搞懂配置原理
|
5月前
|
安全 Java API
Spring Security 6.x 图解身份认证的架构设计
【6月更文挑战第1天】本文主要介绍了Spring Security在身份认证方面的架构设计,以及主要业务流程,及核心代码的实现
83 1
Spring Security 6.x 图解身份认证的架构设计
|
4月前
|
安全 Java 数据安全/隐私保护
使用Spring Security实现细粒度的权限控制
使用Spring Security实现细粒度的权限控制
|
4月前
|
安全 Java 数据安全/隐私保护
使用Java和Spring Security实现身份验证与授权
使用Java和Spring Security实现身份验证与授权
|
4月前
|
存储 安全 Java
Spring Security在企业级应用中的应用
Spring Security在企业级应用中的应用