导入my-batis-plus依赖:
<dependency>
             <groupId>com.baomidou</groupId>
             <artifactId>mybatis-plus-boot-starter</artifactId>
             <version>3.5.3.1</version>
         </dependency>
在dto下创建Acoount类,用于保存账户信息:
@Data
@TableName("db-account")
@AllArgsConstructor
public class Account {
     @TableId(type = IdType.AUTO)
     Integer id;
     String username;
     String password;
     String email;
     String role;
     Date registerTime;
}
在sql中创建对应的表,包含以上的属性,将id设为自动增加。
在mapper包下创建AccountMapper类:
@Mapper
public interface AccountMapper extends BaseMapper<Account> {
}
在service包下创建AccountService接口:
public interface AccountService extends IService<Account> , UserDetailsService {
     Account findAccountByNameOrEmail(String text);
}
创建AccountServiceImpl代理:
@Service
public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> implements AccountService {
     @Override
     public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
         Account account=this.findAccountByNameOrEmail(username);
         if (account==null){
             throw new UsernameNotFoundException("用户名或密码错误");
         }
         return User.withUsername(username)
                 .password(account.getPassword())
                 .roles(account.getRole())
                 .build();
     }
     public Account findAccountByNameOrEmail(String text){
return this.query()
         .eq("username",text).or()
         .eq("email",text)
         .one();
     }
}
配置数据库连接:
  datasource:
     username: root  
     password: yyt320581
     url: jdbc:mysql://localhost:3306/vue-database
     driver-class-name: com.mysql.cj.jdbc.Driver 
在yaml配置文件中:后有空格
由于我建立的表名为db-account,导致发生语法错误,最后mybatis给出的语句中只有-account,请使用_进行数据库命名

尝试进行登陆,将用户名密码改成数据库中设置好的内容。
由于将加密密码存入数据库中,所以还要设置加密器
@Test
     void contextLoads() {
         System.out.println(new BCryptPasswordEncoder().encode("123456"));
     }
新建WebConfiguration中设置加密器:
```Plain Text @Configuration public class WebConfiguration { @Bean BCryptPasswordEncoder passwordEncoder(){ return new BCryptPasswordEncoder(); } }
 
 此时与数据库中的账号信息比对后成功登陆
 由于redis安装在wsl2中,运行时报错Unable to connect to Redis
 首先打开wsl2,输入命令redis-server运行redis,运行命令ip addr show eth0 | grep -oP '(?<=inet\s)\d+(.\d+){3}'
 查看运行的wsl2实例的ip地址,查看redis运行的默认端口号为6379,在idea中配置redis。
 在这之前需要为redis配置文件,请查看redis数据库页面来进行相应配置。
 问题已解决,通过安装非官方windows版redis能够正常运行
 登陆后返回的用户信息仍然为测试时硬编码的内容,注入accountserviec并修改处理方法:
 ```Plain Text
 @Resource
     AccountService service;
 public void onAuthenticationSuccess(HttpServletRequest request,
                                         HttpServletResponse response,
                                         Authentication authentication) throws IOException, ServletException {
         response.setContentType("application/json;charset=utf-8");
         User user=(User)authentication.getPrincipal();
         AuthorizeVO vo =new AuthorizeVO();
         Account account=service.findAccountByNameOrEmail(user.getUsername());
         String token =utils.createJwt(user,account.getId(),account.getUsername());
         vo.setExpire(utils.expireTime());
         vo.setRole(account.getRole());
         vo.setToken(account.getRole());
         vo.setUsername(account.getUsername());
         response.getWriter().write(RestBean.success(vo).asJsonString());
         System.out.println(RestBean.success(token).asJsonString());
     }

此时返回的用户信息正确