首页 > 其他分享 >微服务集成springsecurity:功能授权与数据授权

微服务集成springsecurity:功能授权与数据授权

时间:2024-08-02 16:54:29浏览次数:7  
标签:集成 xcMenus List springsecurity xcMenu authorities 授权 id

前言:最近怎么学习真没状态~~~~懒狗模式启动,听说好多在校考研的同学最近也学不下去了。哎呀,最近面了一下鲸浩科技的实习,到现在已经一天没回了,虽然我觉得面得还不错不过应该是挂了吧。

功能授权:基于注解preAuthorize,实现RBAC模型提供的权限授权

数据授权:这个就比较简单了,通俗的讲就是多租户:比如一个平台上有两家公司的管理员,他们俩不能串了管理信息,所以这里就需要通过特殊标识将他们管理的东西区分开比如为内容附上公司编号列名

功能授权:

授权模块:这里是为UserDetailsService添上最后缺的一个方法:为角色授权,返回的数据可以直接用在new User(user,password,authorities)的authorities中

    private List<SimpleGrantedAuthority> getAuthorities(XcUserExt xcUser) {
        //根据用户id查询权限
        List<XcMenu> xcMenus = xcMenuMapper.selectPermissionByUserId(xcUser.getId());
        if (!xcMenus.isEmpty()) {
            List<String> menus = new ArrayList<>();
            xcMenus.forEach(xcMenu -> menus.add(xcMenu.getCode()));
        }
        List<SimpleGrantedAuthority> authorities = xcMenus.
                stream().
                map(xcMenu -> new SimpleGrantedAuthority(xcMenu.getCode())).
                collect(Collectors.toList());
        return authorities;
    }
@Select("SELECT * FROM menu WHERE id IN (SELECT menu_id FROM permission WHERE role_id IN ( SELECT role_id FROM user_role WHERE user_id = #{userId} ))")
List<XcMenu> selectPermissionByUserId(@Param("userId") String userId);

相关SQL语句梳理

完成上述授权后只需要在相应微服务模块添加@PreAuthorize即可

数据授权:

具体业务模块:

首先需要解析gateway传来的jwt(oauth2自动集成)

通过SecurityContextHolder.getContext().getAuthentication().getPrincipal()获取我们存入username里的数据,然后可以通过JSON.parseObject转成相应对象。

一般具体对象内包含了明确的相关标识,取出来和响应模块比对即可

例如:userdetails中存有companyId成员,对应的内容模块内的内容表也存有相应的companyId字段。

标签:集成,xcMenus,List,springsecurity,xcMenu,authorities,授权,id
From: https://www.cnblogs.com/kun1790051360/p/18339088

相关文章

  • springboot+vue前后端分离项目-项目搭建15-集成JWT token权限验证
    1.对之前的代码改造,之前将user存储到sessionStorage,改成存储到localStorage,全局搜索修改 之前Result.code等于0代表success,改成200代表success,vue文件全局搜索修改一、前端部分1.改造request.js,登录时将user已经存储到localStorage里,这里将user获取到,将user里的token放到......
  • Springboot Docker Redis Mysql集成
    尽管网上关于SpringbootDockerRedisMysql集成的文档很多,但是很多都是老文档,问题不少,所以我专门整理了这份文档。我家里的笔记本是mac,所以我就在mac上详细说明下我的搭建过程。首先我们需要安装docker,mac上本来就有docker的安装包,因此对于mac来说,安装docker就是一件比较轻松的......
  • Linux设备树配置指南:ES8388音频编解码器集成
    在嵌入式Linux开发中,设备树对于硬件集成至关重要。本文详细介绍了如何在设备树中配置ES8388音频编解码器,包括耳机检测、扬声器控制和音频路由。在嵌入式系统设计中,音频功能是一个常见需求。ES8388是一款流行的音频编解码器,支持多种音频输入输出功能。本文将指导您如何在Linux......
  • Java身份证二要素核验集成方式、身份认证
    身份证二要素核验是实名认证中比较简单、便捷的身份验证技术,其主要核验身份证号码、姓名两个要素信息是否一致,从而确保用户注册时提供身份的真实性,,以此来保障人们的财产及信息安全。现如今无论是人们的生活还是工作,均需要进行个人信息的实名认证,下面以身份证二要素实名认证Jav......
  • Java企业工商信息核验集成方式、营业执照查验API
    ‌如果说身份证是公民证明身份的有效证件,那么营业执照便是企业、个体经营者准许从事某项生产服务活动的最佳凭证之一。当企业或个体在互联网平台为用户提供服务时,需要提供营业执照来验证服务的真实有效,以此来保障消费者权益免受损失。下面以企业工商信息查询、营业执照查......
  • 抖音多账号授权给独立客服系统,实现评论私信互动与自动化回复
    在当今数字化时代,社交媒体平台如抖音已成为企业与客户互动的重要渠道。为了更好地管理客户关系并提升服务质量,企业需要有效地整合抖音账号与客服系统。本文将详细介绍两种抖音授权接入方式,以及如何利用这些授权提升客户互动和自动化回复的效率。演示网站:gofly.v1kf.com抖音授权......
  • 【SpringBoot】集成Redis
    目录1redis1.1特点1.2支持的数据类型1.3应用场景2安装redis2.1docker3可视化软件3.1RedisDesktopManager(RDM)3.2QuickRedis(推荐)4SpringBoot集成4.1引入redis4.2.操作redis4.2.1直接操作4.3分布式会话场景(Resis-Session)1redis​ redis是一个用C语言开发的,基于内......
  • spring集成elasticsearch并实现基础功能
    什么是elasticsearch?Elasticsearch是一个基于Lucene的开源搜索引擎和分析引擎,它为结构化和非结构化的海量数据提供了实时的搜索、分析和可视化功能。Elasticsearch是ElasticStack(也称为ELKStack)的核心组件之一,其他组件还包括Kibana(用于数据可视化)、Logstash(用于数据......
  • SpringSecurity
    1.认证授权的概述1.1什么是认证?进入移动互联网时代,大家每天都在刷手机,常用的软件有微信、支付宝、头条,抖音等,下边拿微信来举例子说明认证相关的基本概念,在初次使用微信前需要注册成为微信用户,然后输入账号和密码即可登录微信,==输入账号和密码登录微信的过程就是认证==。系统......
  • vue集成svg大图拖拽无限放大缩小
        vue项目中根据实际CAD图为参考,以及参看项目实际现场,手动绘制了一张线体、堆垛机、库区货架svg图,集成到vue页面中,svg图中可以交互接收C#发送过来的singalR实时数据。接收singalR的实时数据并显示到vue中,这里不作展开讲,可以参看笔者另一篇文章《vue若依集成C#的singalR接......