SpringBoot权限管理之SpringSecurity

官方文档: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>)后端判断是否有标识,然后给数据库中的值添加标识,应用到正式项目中


版权声明:本文为ANewNumber原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。