官方文档:Spring Security :: Spring Security
MAVEN导入依赖:
<dependencies>
<!-- ... other dependency elements ... -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
</dependencies>
application.properties导入:
<properties>
<spring-security.version>5.6.2-SNAPSHOT</spring-security.version>
</dependencies>
权限管理主要逻辑是,给你数据库的用户给予一个值,然后模块通过这个值来判断是否给予访问,如果不能访问,可以加上disable属性,实现不同用户显示的页面不同】
给用户添加特定字符:
User user = User.withDefaultPasswordEncoder()
. username("user") .password("password")
.roles("user") .build();
roles():方法的本质就是给[user,password]添加一个user标识
这时候就有一个很严重的问题,虽然我们是项目上线,提交.class文件,但是.class文件是可以通过一些方法进行反编译生成.java的(反编译之后会提),那样一来,密码就完全暴露出来了,会造成很大的安全隐患,所有在使用SpringSecurity时,不要忘记给密码加上SpringSecurity自带的加密方法
String idForEncode = "bcrypt";
Map encoders = new HashMap<>();
encoders.put(idForEncode, new BCryptPasswordEncoder());
encoders.put("noop", NoOpPasswordEncoder.getInstance());
encoders.put("pbkdf2", new Pbkdf2PasswordEncoder());
encoders.put("scrypt", new SCryptPasswordEncoder());
encoders.put("sha256", new StandardPasswordEncoder());
PasswordEncoder passwordEncoder = new DelegatingPasswordEncoder(idForEncode, encoders);
这是BCryptPasswordEncoder加密的验证,生成16位,这些在官方文档都有,其余的可以自行查找
// Create an encoder with strength 16
BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(16);
String result = encoder.encode("myPassword");
assertTrue(encoder.matches("myPassword", result));
当然,使用MD5加密也是可以的,不用只局限一种 ,时间有点紧迫,就分两章了,博主要去拜年了,下一章主要讲一下前(<sec:authorize>)后端判断是否有标识,然后给数据库中的值添加标识,应用到正式项目中