配置MybatisPlus基礎環(huán)境
- 1、配置pom文件
<!--mysql驅動-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29</version>
</dependency>
<!--druid數(shù)據(jù)源-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.5</version>
</dependency>
<!--MybatisPlus映射框架-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
- 2、配置yml文件
server:
port: 8090
servlet:
encoding:
charset: UTF-8
spring:
application:
name: auth
datasource:
url: jdbc:mysql://localhost:3306/authdb?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&AllowPublicKeyRetrieval=True
username: root
password: spy167935842687
mybatis-plus:
mapper-locations: mapper/*.xml
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
map-underscore-to-camel-case: true
type-aliases-package: com.spyu.auth.entity
- 3、用戶表
CREATE TABLE `per_user` (
`user_id` bigint unsigned NOT NULL COMMENT '用戶id',
`user_code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '用戶編碼',
`login_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '登錄名稱',
`username` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '用戶名稱',
`password` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '密碼',
`phone` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '電話',
`salt` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '鹽值',
`pic_url` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '頭像路徑',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '備注',
`user_create` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用戶創(chuàng)建時間',
`user_update` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用戶更新時間',
PRIMARY KEY (`user_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC;
- 4、生成對應的Mapper文件
# PerUserInfoMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.spyu.auth.dao.PerUserInfoMapper">
</mapper>
# PerUserInfoMapper.java
/**
* 用戶dao
* @author sunpeiyu
* @since 2023-06-19
*/
@Mapper
public interface PerUserInfoMapper extends BaseMapper<PerUserInfoEntity> {
}
編寫實現(xiàn)了UserDetailService接口的實現(xiàn)類
/**
* spring security獲取數(shù)據(jù)庫返回的結果UserDetail
* @author sunpeiyu
* @since 2023-06-19
*/
@Component
public class LoginUserDetailImpl implements UserDetailsService {
@Autowired
private PerUserInfoMapper perUserInfoMapper;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
String tip = "用戶" + username + "不存在";
if (StringUtils.isEmpty(username)) {
throw new CommonException(tip);
}
LambdaQueryWrapper<PerUserInfoEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(PerUserInfoEntity::getUsername, username);
PerUserInfoEntity userInfoEntity = perUserInfoMapper.selectOne(queryWrapper);
if (Objects.isNull(userInfoEntity)) {
throw new CommonException("用戶不存在!");
}
PerUserInfoBO perUserInfoBO = new PerUserInfoBO();
BeanUtils.copyProperties(userInfoEntity, perUserInfoBO);
return new LoginUserBO(perUserInfoBO);
}
}
配置一個無加密的編碼器
注意:如果不配置編碼器,那么就會拋出異常,There is no PasswordEncoder mapped for id “null”
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
/**
* 注冊解碼器
* @return
*/
@Bean
public PasswordEncoder passwordEncoder(){
// return new BCryptPasswordEncoder();
return NoOpPasswordEncoder.getInstance();
}
}
測試
數(shù)據(jù)庫:
訪問http://localhost:8090/test/boot
登錄失敗:
此處在登錄成功后,就返回了業(yè)務測試接口的數(shù)據(jù),如果失敗返回錯誤提示,要求重新登錄