Spring Security授权_编写查询权限方法

网友投稿 514 2022-11-05

Spring Security授权_编写查询权限方法

Spring Security授权_编写查询权限方法

编写用户、角色、权限实体类

//用户类/** * @Author yqq * @Date 2022/05/17 22:47 * @Version 1.0 */@Datapublic class Users { private Integer uid; private String username; private String password; private String phone;}//角色类@Datapublic class Role { private Integer rid; private String rolename; private String roledesc;}//权限类@Datapublic class Permission { private Integer pid; private String permissionname; private String url;

编写UserMapper接口

public interface UsersMapper extends BaseMapper { List findPermissionByUserName(String username);}

在resources目录中编写UsersMapper的映射文件

测试

@SpringBootTestpublic class MapperTest { @Autowired private UsersMapper usersMapper; @Test public void test(){ List permissions = usersMapper.findPermissionByUserName("yqq"); permissions.forEach(System.out::println); }}

认证成功后把权限封装GrantedAuthority类

@Servicepublic class MyUserDetailService implements UserDetailsService { @Autowired private UsersMapper usersMapper; //自定义认证逻辑 @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { //1 构造查询条件 QueryWrapper wrapper = new QueryWrapper().eq("username", username); //2 查询用户 Users users = usersMapper.selectOne(wrapper); if (users == null) return null; //3 查询用户权限 List permissions = usersMapper.findPermissionByUserName(username); //4 将自定义权限集合转换为Security的权限类型集合 List grantedAuthorities = new ArrayList<>(); permissions.forEach(e -> { grantedAuthorities.add(new SimpleGrantedAuthority(e.getUrl())); }); //5 封装为UserDetails对象 UserDetails userDetails = User.withUsername(users.getUsername()) .password(users.getPassword()) .authorities(grantedAuthorities) .build(); //6 返回封装好的userDetails对象 return userDetails; }}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:$mol - 最快的响应式微型模块化UI框架,非常简单,但非常强大
下一篇:Buefy是一个基于Bulma框架和设计的Vue.js响应式UI组件轻量级库
相关文章

 发表评论

暂时没有评论,来抢沙发吧~