1.搭建数据库
CREATE TABLE `account` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '编号',
`account` varchar(10) NOT NULL COMMENT '账号',
`password` varchar(10) NOT NULL COMMENT '密码',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3 COMMENT='用户账号';
2.搭建Spring boot工程以及导入依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
安全框架依赖
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.wso2.bps</groupId>
<artifactId>UserService</artifactId>
<version>3.5.1</version>
<scope>compile</scope>
</dependency>
</dependencies>
3.创建实体类
@Data
@Controller
public class account {
private int id;
private String account;
private String password;
}
4.配置Yml文件
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/xxxxx
username: xxxxx
password: xxxxx
5.实现 BaseMapper接口
@Mapper
public interface user extends BaseMapper<account> {
@Select("select * from account")
List<account> selectList();
@Select( "select * from account where account=#{name} ")
account longin(String name);
}
6.配置配置类
@Controller
public class Security implements UserDetailsService {
@Autowired
private user u;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
//查询账户信息
account account1 = u.longin(username);
//账户不存在时,逻辑
if(account1==null){
throw new UsernameNotFoundException("没有该账户");
}
// 这是一个关于 Spring Security 的方法,用于将逗号分隔的角色字符串转换为权限列表。
List<GrantedAuthority> authorities =
AuthorityUtils.commaSeparatedStringToAuthorityList("role");
//创建 user 并非 wed文件夹中User 返回
return new User(account1.getAccount(),
new BCryptPasswordEncoder().encode(account1.getPassword()),authorities);
}
7.web接口
@Controller
public class wed {
@Autowired
private user U;
@GetMapping("/wed")
public String get(){
System.out.println(U.selectList().size());
return "hello.html";
}
}
8前端Hello.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
进入主页成功
</body>
</html>
如果报There is no PasswordEncoder mapped for the id “null异常,这里是加密的问题,在加密Password前面+"{bcrypt}",前缀。
return new User(account1.getAccount(),"{bcrypt}" +
new BCryptPasswordEncoder().encode(account1.getPassword()),authorities);
}