QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.eq("username",username); User user = (User) usersMapper.selectOne(queryWrapper); if (user==null){ throw new UsernameNotFoundException("用户名不存在"); } List<GrantedAuthority> role = AuthorityUtils.commaSeparatedStringToAuthorityList("role"); return new User(user.getUsername(),new BCryptPasswordEncoder().encode(user.getPassword()),role); }
时间: 2024-02-02 20:02:26 浏览: 70
mybatis plus条件构造器queryWrapper、updateWrapper
这段代码的作用是从数据库中查询指定用户名的用户信息,并将用户信息封装为一个 Spring Security 的 User 对象返回。具体的实现过程如下:
1. 创建一个 QueryWrapper 对象,并使用 eq 方法指定查询条件,其中 "username" 是数据库表中的字段名,username 是方法参数传入的用户名。
2. 使用 selectOne 方法执行查询,将查询结果转换为 User 对象。如果查询结果为 null,则抛出一个 UsernameNotFoundException 异常,表示用户名不存在。
3. 创建一个 GrantedAuthority 列表,其中包含一个名为 "role" 的权限。
4. 使用查询到的用户信息构造一个 Spring Security 的 User 对象,并将密码使用 BCryptPasswordEncoder 进行加密处理,最终返回 User 对象。
需要注意的是,这段代码使用了 BCryptPasswordEncoder 对密码进行了加密处理,这是一种常用的密码加密方法,可以有效提高密码的安全性。同时,返回的 User 对象中包含了一个名为 "role" 的权限,但是这个权限是固定的而不是从数据库中查询得到的,需要根据实际情况进行修改。
阅读全文