【稻草人问答项目—Day02】Spring-Security 验证以及授权框架、使用Bcrypt算法加密、自定义登陆页面
Day01 项目:【稻草人问答项目—Day01】环境搭建、数据库的连接、LOMBOK框架、MYbatis Plus Generator 代码生成器
接着Day 01项目继续往下进行
一、Spring安全框架的概述以及使用
1. Spring安全框架概述
- 不是随随便便的一个人就可以访问我们的网站页面,获取数据,那样我们的网站会很不安全,容易被黑客攻击;为此我们要给我们的网站做一些安全措施
- Spring安全框架: Spring-Security,是Spring提供的安全管理框架,所谓安全管理指登录控制,权限管理,访问规则等一个网站的安全设置,Spring-Security可以实现初级程序员编写少量代码实现较高安全级别的程序,现在主流的安全框架除了Spring-Security还有Shiro
2.Spring安全框架初步使用
- 1、在我们portal项目中添加依赖
<!-- Spring Security -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<!-- Spring Security Test -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
- 依赖一旦添加成功,当前网站的所有资源都会被Spring-Security保护起来了,必须输入用户名和密码来访问,默认的用户名是user,密码会在启动服务时随机生成,输出到控制台上,
- 如果不想使用默认的用户名和密码,可以在application.properties文件中设置:
# 配置Spring-Security的用户名和密码
spring.security.user.name=admin
spring.security.user.password=123123
- 但是采用明文密码有安全隐患,别人就可以直接在配置文件中看到密码:123123,所以我们要进行密码加密
二、Bcrypt算法加密
- 现在主流的加密算法:MD5,BCrypt,这里我们使用Bcrypt
- Spring-Security框架直接包含了BCrypt的加密对象,供我们直接使用
BCrpty加密
- 1、首先在测试类中编写代码运行Bcrtpy的加密代码
@Test
public void bcrypt(){
//这个类就是能够对字符串进行加密的类
BCryptPasswordEncoder encoder=
new BCryptPasswordEncoder();
//将字符串加密的方法encode
String pwd=encoder.encode("123456");
//输出加密之后的字符串
System.out.println(pwd);
//$2a$10$MMHXEOPzAmVoDVbEpfcu5Om8tWcmnhREAYgmIeVrxmJkzMKD/L4cS
//每次运行程序加密的结果是不同的,这是加密算法的“加盐”
//虽然每次生产的结果不同,但是一定能表示我们要加密的内容
}
结果:
- 补充:加密算法“加盐” 就是每次运行程序加密的结果是不同的,虽然每次生产的结果不同,但是一定能表示我们要加密的内容
- 2、验证一个字符串是否匹配一个加密结果
@Test
public void bcrypt(){
//这个类就是能够对字符串进行加密的类
BCryptPasswordEncoder encoder=
new BCryptPasswordEncoder();
//下面验证匹配结果
//要匹配的字符串
String str="123123";
//要验证的加密结果<