创建数据库 security,并创建一个User表:
对应的数据库 Schema 脚本,数据库 Data 脚本如下:
DROP TABLE IF EXISTS users;
CREATE TABLE users(
id BIGINT(20) PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20) UNIQUE NOT NULL,
password VARCHAR(100)
);
DELETE FROM users;
INSERT INTO users (id, username, password) VALUES
(1, ‘张三’, ‘123456’),
(2, ‘李四’, ‘123456’),
(3, ‘王五’, ‘123456’);
通过MybatisPlus完成数据库操作: Mybatis-Plus基本使用
添加依赖:
com.baomidou
mybatis-plus-boot-starter
3.3.1.tmp
mysql
mysql-connector-java
runtime
org.projectlombok
lombok
创建实体类Users:
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Users {
private Integer id;
private String username;
private String password;
}
新建mapper包,创建UsersMapper接口:
想要使用接口,需要在启动器或配置类上添加注解:@MapperScan("com.ly.mapper")
@Repository
public interface UsersMapper extends BaseMapper {
}
配置文件添加数据库配置 :
spring:
#配置数据源
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/security?useSSL=false&serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8
username: root
password: 123456
在实现类中添加数据库相关操作:
@Service(“userDetailsService”)
public class MyUserDetailsService implements UserDetailsService {
@Autowired
private UsersMapper usersMapper;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
//调用usersMapper方法,根据用户名查询数据库
QueryWrapper wrapper = new QueryWrapper<>();
wrapper.eq(“username”,username);
Users users = usersMapper.selectOne(wrapper);
//判断
if(users==null){//数据库没有数据,认证失败
throw new UsernameNotFoundException(“用户名不存在!”);
}
//手动设置了role,也可以通过数据库查询获取
List auths = AuthorityUtils.commaSeparatedStringToAuthorityList(“role”); //配置角色
return new User(users.getUsername(),
new BCryptPasswordEncoder().encode(users.getPassword()),auths);
}
}
测试访问:
自定义登陆页面:
用户名: