
上篇:Spring Security系列之基本原理
一、整合mybatis plus 完成数据库操作项目工程结构如下:
1、引入pom文件依赖
com.baomidou
mybatis-plus-boot-starter
3.0.5
mysql
mysql-connector-java
org.projectlombok
lombok
完整的pom文件配置
2、创建数据库与数据表4.0.0 org.springframework.boot spring-boot-starter-parent2.5.5 org.apache.security springsecuritydemo0.0.1-SNAPSHOT springsecuritydemo Demo project for Spring Boot 1.8 org.springframework.boot spring-boot-starter-securityorg.springframework.boot spring-boot-starter-weborg.springframework.boot spring-boot-starter-testtest org.springframework.security spring-security-testtest com.baomidou mybatis-plus-boot-starter3.0.5 mysql mysql-connector-javaorg.projectlombok lombok
CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(255) DEFAULT NULL, `password` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf83、创建bean
package org.apache.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Integer id;
private String username;
private String password;
}
4、创建mapper接口
package org.apache.mapper; import com.baomidou.mybatisplus.core.mapper.baseMapper; import org.apache.entity.Users; import org.springframework.stereotype.Repository; @Repository public interface UsersMapper extends baseMapper{ }
实现它的接口方法
package org.apache.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.apache.entity.User;
import org.apache.mapper.UsersMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("userDetailsService")
public class MyUserDetailsService implements UserDetailsService {
@Autowired
private UsersMapper usersMapper;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
//调用usersMapper方法,根据用户名查询数据库
QueryWrapper wrapper = new QueryWrapper();
// where username=?
wrapper.eq("username",username);
User users = usersMapper.selectOne(wrapper);
//判断
if(users == null) {//数据库没有用户名,认证失败
throw new UsernameNotFoundException("用户名不存在!");
}
List auths =
AuthorityUtils.commaSeparatedStringToAuthorityList("admin,ROLE_sale");
//从查询数据库返回users对象,得到用户名和密码,返回
return new org.springframework.security.core.userdetails.User(users.getUsername(),
new BCryptPasswordEncoder().encode(users.getPassword()),auths);
}
}
5、配置数据源
server.port=8111 #mysql数据库连接 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/mp?serverTimezone=GMT%2B8 spring.datasource.username=root spring.datasource.password=1234566、编写controller类
package org.apache.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/test")
public class TestController {
@GetMapping("hello")
public String hello() {
return "hello security";
}
}
启动主程序
9、debug测试效果当debug启动后,访问:http://localhost:8111/test/hello,进入web页面