建筑设计网站免费,网页设计实验报告的结果分析怎么写,网站只做优化,7c框架 网站建设#x1f341; 作者#xff1a;知识浅谈#xff0c;CSDN签约讲师#xff0c;CSDN博客专家#xff0c;华为云云享专家#xff0c;阿里云专家博主 #x1f4cc; 擅长领域#xff1a;全栈工程师、爬虫、ACM算法 #x1f492; 公众号#xff1a;知识浅谈 #x1f525;网站… 作者知识浅谈CSDN签约讲师CSDN博客专家华为云云享专家阿里云专家博主 擅长领域全栈工程师、爬虫、ACM算法 公众号知识浅谈 网站vip.zsqt.cc 视频教程 上一篇SpringSecurity集成JWT实现后端认证授权保姆级教程-认证配置篇 上一节编写了对应的SpringSecurity的认证本节开始进行SpringSecurity授权
修改用户类返回用户权限信息 修改对应的getAuthorities方法 TableName(value cust_user)
Data
public class CustUser implements Serializable, UserDetails { //这里新增实现UserDetails TableId(type IdType.AUTO)private Integer id;private String username;private String nickname;private Integer enable;private String password;
//----------------------------------------------------以下为新增的部分---------------------------------TableField(exist false)private ListString permissions; //权限集合//存储SpringSecurity所需要的权限信息的集合//安全限制不允许序列化JSONField(serialize false)JsonIgnoreTableField(exist false)private ListGrantedAuthority authorities;Overridepublic Collection? extends GrantedAuthority getAuthorities() {
// return Arrays.asList(new SimpleGrantedAuthority(ROLE_USER));if (this.authorities null) {//把permissions中字符串类型的权限信息转换成GrantedAuthority对象存入authorities中this.authorities this.permissions.stream().distinct().map(SimpleGrantedAuthority::new).collect(Collectors.toList());}return this.authorities;}//------------------------------------------------------------------------------------------------Overridepublic boolean isAccountNonExpired() {return true;}Overridepublic boolean isAccountNonLocked() {return true;}Overridepublic boolean isCredentialsNonExpired() {return true;}Overridepublic boolean isEnabled() {return true;}TableField(exist false)private static final long serialVersionUID 1L;
}对CustUserServiceImpl 进行修改
对CustUserServiceImpl 中的loadUserByUsername进行修改 针对之前的数据准备篇的CustUserServiceImpl实现类 进行更改 Service
public class CustUserServiceImpl extends ServiceImplCustUserMapper, CustUser implements CustUserService{ //这个地方新增实现CustUserService接口Autowiredprivate CustUserMapper custUserMapper;Autowiredprivate SysMenuMapper menuMapper;//-----------------------------------------------------以下为修改的内容------------------------------------------Overridepublic UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {LambdaQueryWrapperCustUser queryWrapper new LambdaQueryWrapper();queryWrapper.eq(CustUser::getUsername, username);CustUser user custUserMapper.selectOne(queryWrapper);if (user null) {log.error(用户名不存在);throw new UsernameNotFoundException(用户名不存在);}else {ListString permissions menuMapper.selectPermsByUserId(user.getId());user.setPermissions(permissions); //封装权限return user;}}
//----------------------------------------------------------------------------
}上边的这个主要是实现loadUserByUsername方法中获取数据库中用户的权限。 添加之后会发现上边的menuMapper.selectPermsByUserId(user.getId());报错因为我们还没有在menuMapper新增selectPermsByUserId方法接下来我们新增一个查询用户权限的方法。
新增根据用户id查询权限的方法
在mapper/SysMenuMapper中的新增方法selectPermsByUserId
public interface SysMenuMapper extends BaseMapperSysMenu {ListString selectPermsByUserId(Integer id);
}在resources/SysMenuMapper/xml中的新增方法selectPermsByUserId select idselectPermsByUserId resultTypejava.lang.StringSELECTDISTINCT m.permsFROMsys_user_role urLEFT JOIN sys_role r ON ur.role_id r.idLEFT JOIN sys_role_menu rm ON ur.role_id rm.role_idLEFT JOIN sys_menu m ON m.id rm.menu_idWHEREuser_id #{id}AND r.status 0AND m.status 0/select编写权限测试的接口
在数据库中的增加test权限
Api(tags 测试类)
RestController
RequestMapping(/test)
public class TestController {Autowiredprivate CustUserService custUserService;ApiOperation(value 测试方法)PreAuthorize(hasAuthority(test)) // 权限验证 需要用户具有test权限GetMapping(/test)public CustUser test(){return custUserService.getById(1);}}到这授权就已经好了。如果还想根据角色进行权限认证可自己百度后边有时间我会更新。
总结
大功告成撒花致谢关注我不迷路带你起飞带你富。 Writted By 知识浅谈