【业务功能篇96】微服务-springcloud-springboot-认证服务-登录注册功能-Auth2.0-分布式session

SpringBoot OAuth2.0认证管理流程详解 OAuth2.0是一个开放的授权协议,可以用来实现第三方应用对我们API的访问控制,OAuth2.0中定义的角色包括: 1) Resource Owner(资源拥有者) 2) Client (第三方接入平台,请求者) 3) Resource Server (服务器资源: 数据中心) 4) Authorization Server (认证服务器) 授权认证的基本流程包括: 首先Client需要向Resource Ow...... 阅读详情

5.登录功能

  通过最基础的登录操作来完成登录处理

登录页面处理

image.png

认证服务的处理


    /**
     * 注册的方法
     * @return
     */
    @PostMapping("/login")
    public String login(LoginVo loginVo , RedirectAttributes redirectAttributes){
        R r = memberFeginService.login(loginVo);
        if(r.getCode() == 0){
            // 表示登录成功
            return "redirect:http://msb.mall.com/home";
        }

        redirectAttributes.addAttribute("errors",r.get("msg"));

        // 表示登录失败,重新跳转到登录页面
        return "redirect:http://msb.auth.com/login.html";


    }

会员中心的认证逻辑


    @RequestMapping("/login")
    public R login(@RequestBody MemberLoginVO vo){
        MemberEntity entity = memberService.login(vo);
        if(entity != null){
            return R.ok();
        }

        return R.error(BizCodeEnume.USERNAME_PHONE_VALID_EXCEPTION.getCode(),
                BizCodeEnume.USERNAME_PHONE_VALID_EXCEPTION.getMsg());
    }

service中的具体认证处理

    @Override
    public MemberEntity login(MemberLoginVO vo) {
        // 1.根据账号或者手机号来查询会员信息
        MemberEntity entity = this.getOne(new QueryWrapper<MemberEntity>()
                .eq("username", vo.getUserName())
                .or()
                .eq("mobile", vo.getUserName()));
        if(entity != null){
            // 2.如果账号或者手机号存在 然后根据密码加密后的校验来判断是否登录成功
            BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
            boolean matches = encoder.matches(vo.getPassword(), entity.getPassword());
            if(matches){
                // 表明登录成功
                return entity;
            }
        }
        return null;
    }

6.Auth2.0

  OAuth2.0是OAuth协议的延续版本,但不向前兼容OAuth 1.0(即完全废止了OAuth1.0)。 OAuth
2.0关注客户端开发者的简易性。要么通过组织在资源拥有者和HTTP服务商之间的被批准的交互动作代表用户,要么允许第三方应用代表用户获得访问的权限。

image.png

6.1 微博开放平台

地址:https://open.weibo.com/

image.png

创建应用

image.png

image.png

创建后的基本信息:

image.png

授权设置:

image.png

社交认证文档:

image.png

微博Web端授权的操作:

image.png

image.png

引导用户点击按钮跳转到对应的授权页面

image.png

image.png

点击授权按钮后查看回调接口的code信息

image.png

获取到了code信息:59d62e59e5ead5a4ea89c6f9cf212568

然后根据code信息我们可以去授权服务器获取对应的AccessToken。

https://api.weibo.com/oauth2/access_token?client_id=1093598037&client_secret=1085c8de04dee49e9bb110eaf2d3cf62&grant_type=authorization_code&redirect_uri=http://msb.auth.com/success.html&code=59d62e59e5ead5a4ea89c6f9cf212568

获取Token信息只支持POST方式提交

image.png

在PostMan中通过post方式提交成功获取到了对应的token信息

image.png

获取到了Token信息后我们就可以去资源服务器获取对象的信息

image.png

6.2 百度开放平台

地址:

Auth2.0操作:https://developer.baidu.com/wiki/index.php?title=docs/oauth

image.png

创建应用:http://developer.baidu.com/console#app/project

image.png

image.png

创建完成:

image.png

引导用户跳转到授权地址:

http://openapi.baidu.com/oauth/2.0/authorize?
	response_type=code&
	client_id=YOUR_CLIENT_ID&
	redirect_uri=YOUR_REGISTERED_REDIRECT_URI&
	scope=email&
	display=popup

地址修改为我们自己的:http://openapi.baidu.com/oauth/2.0/authorize?response_type=code&client_id=MmvAkQM7HtrQnKDDhhmTSib5&redirect_uri=http://www.baidu.com&display=popup

image.png

获取到的Code信息

image.png

code:d789d0160b2fa99bb1f840002569526e

获取到对应的token信息

image.png

Token:121.6966ae0e0f3cd19fa36a375489342b08.YmfrSxYqsOt1eUoPzkC60yCsa7W09OmqTbPsuVL.zmdMFg

token访问地址:https://openapi.baidu.com/rest/2.0/passport/users/getLoggedInUser?access_token=121.6966ae0e0f3cd19fa36a375489342b08.YmfrSxYqsOt1eUoPzkC60yCsa7W09OmqTbPsuVL.zmdMFg

image.png

7.社交登录实现

7.1 code处理

  在后台服务中获取code并对应的获取Token信息

image.png

image.png

然后需要同步的调整引入的链接地址:

image.png

7.2 获取Token信息

  根据上一步获取的code信息,我们可以获取对应的Token信息

    @RequestMapping("/oauth/weibo/success")
    public String weiboOAuth(@RequestParam("code") String code) throws Exception {
        Map<String,String> body = new HashMap<>();
        body.put("client_id","1093598037");
        body.put("client_secret","1085c8de04dee49e9bb110eaf2d3cf62");
        body.put("grant_type","authorization_code");
        body.put("redirect_uri","http://msb.auth.com/oauth/weibo/success");
        body.put("code",code);
        // 根据Code获取对应的Token信息
        HttpResponse post = HttpUtils.doPost("https://api.weibo.com"
                , "/oauth2/access_token"
                , "post"
                , new HashMap<>()
                , null
                , body
        );
        int statusCode = post.getStatusLine().getStatusCode();
        if(statusCode != 200){
            // 说明获取Token失败,就调回到登录页面
            return "redirect:http://msb.auth.com/login.html";
        }
        // 说明获取Token信息成功
        String json = EntityUtils.toString(post.getEntity());
        SocialUser socialUser = JSON.parseObject(json, SocialUser.class);
        // 注册成功就需要调整到商城的首页
        return "redirect:http://msb.mall.com/home.html";
    }

7.3 登录和注册

  表结构中新增对应的

image.png

然后在对应的实体对象中添加对应的属性

image.png

service中实现注册和登录的逻辑

    /**
     * 社交登录
     * @param vo
     * @return
     */
    @Override
    public MemberEntity login(SocialUser vo) {
        String uid = vo.getUid();
        // 如果该用户是第一次社交登录,那么需要注册
        // 如果不是第一次社交登录 那么就更新相关信息 登录功能
        MemberEntity memberEntity = this.getOne(new QueryWrapper<MemberEntity>().eq("social_uid", uid));
        if(memberEntity != null){
            // 说明当前用户已经注册过了 更新token和过期时间
            MemberEntity entity = new MemberEntity();
            entity.setId(memberEntity.getId());
            entity.setAccessToken(vo.getAccessToken());
            entity.setExpiresIn(vo.getExpiresIn());
            this.updateById(entity);
            // 在返回的登录用户信息中我们同步的也保存 token和过期时间
            memberEntity.setAccessToken(vo.getAccessToken());
            memberEntity.setExpiresIn(vo.getExpiresIn());
            return memberEntity;
        }
        // 表示用户是第一提交,那么我们就需要对应的来注册
        MemberEntity entity = new MemberEntity();
        entity.setAccessToken(vo.getAccessToken());
        entity.setExpiresIn(vo.getExpiresIn());
        entity.setSocialUid(vo.getUid());
        // 通过token调用微博开发的接口来获取用户的相关信息
        try {
            Map<String,String> querys = new HashMap<>();
            querys.put("access_token",vo.getAccessToken());
            querys.put("uid",vo.getUid());
            HttpResponse response = HttpUtils.doGet("https://api.weibo.com"
                    , "/2/users/show.json"
                    , "get"
                    , new HashMap<>()
                    , querys
            );
            if(response.getStatusLine().getStatusCode() == 200){
                String json = EntityUtils.toString(response.getEntity());
                JSONObject jsonObject = JSON.parseObject(json);
                String nickName = jsonObject.getString("screen_name");
                String gender = jsonObject.getString("gender");
                entity.setNickname(nickName);
                entity.setGender("m".equals(gender)?1:0);
            }
        }catch (Exception e){

        }
        // 注册用户信息
        this.save(entity);
        return entity;
    }

7.4 登录的串联

在Auth服务中我们需要通过Feign来调用MemberService中的相关服务来完成最后的串联

    @RequestMapping("/oauth/weibo/success")
    public String weiboOAuth(@RequestParam("code") String code) throws Exception {
        Map<String,String> body = new HashMap<>();
        body.put("client_id","1093598037");
        body.put("client_secret","1085c8de04dee49e9bb110eaf2d3cf62");
        body.put("grant_type","authorization_code");
        body.put("redirect_uri","http://msb.auth.com/oauth/weibo/success");
        body.put("code",code);
        // 根据Code获取对应的Token信息
        HttpResponse post = HttpUtils.doPost("https://api.weibo.com"
                , "/oauth2/access_token"
                , "post"
                , new HashMap<>()
                , null
                , body
        );
        int statusCode = post.getStatusLine().getStatusCode();
        if(statusCode != 200){
            // 说明获取Token失败,就调回到登录页面
            return "redirect:http://msb.auth.com/login.html";
        }
        // 说明获取Token信息成功
        String json = EntityUtils.toString(post.getEntity());
        SocialUser socialUser = JSON.parseObject(json, SocialUser.class);
        R r = memberFeginService.socialLogin(socialUser);
        if(r.getCode() != 0){
            // 登录错误
            return "redirect:http://msb.auth.com/login.html";
        }
        String entityJson = (String) r.get("entity");
        System.out.println("----------------->" + entityJson);
        // 注册成功就需要调整到商城的首页
        return "redirect:http://msb.mall.com/home";
    }

二、分布式session

1.session问题

image.png

image.png

image.png

image.png

image.png

image.png

2.SpringSession整合

  我们通过SpringSession来实现Session的共享,Session数据存储在Redis中

image.png

SpringSession的操作指南:

https://docs.spring.io/spring-session/docs/2.5.6/reference/html5/guides/boot-redis.html

导入相关的依赖

        <dependency>
            <groupId>org.springframework.session</groupId>
            <artifactId>spring-session-data-redis</artifactId>
        </dependency>

设置对应的配置

image.png

最后我们需要添加对有的注解,放开操作

image.png

然后在Auth服务和商城首页都整合SpringSession后,我们再商城首页可以看到Session的数据,注意这儿是手动修改Cookie的域名

image.png

image.png

3.自定义Cookie

  通过自定义Cookie实现session域名的调整

@Configuration
public class MySessionConfig {

    /**
     * 自定义Cookie的配置
     * @return
     */
    @Bean
    public CookieSerializer cookieSerializer(){
        DefaultCookieSerializer cookieSerializer = new DefaultCookieSerializer();
        cookieSerializer.setDomainName("msb.com"); // 设置session对应的一级域名
        cookieSerializer.setCookieName("msbsession");
        return cookieSerializer;
    }

    /**
     * 对存储在Redis中的数据指定序列化的方式
     * @return
     */
    @Bean
    public RedisSerializer<Object> redisSerializer(){
        return new GenericJackson2JsonRedisSerializer();
    }
}

4.单点登录案例演示

  xxl-sso案例代码地址:https://gitee.com/xuxueli0323/xxl-sso?_from=gitee_search

下载下来的代码解压缩后通过idea导入,然后修改server和simple中的属性文件,同时我们需要在host中设置对应的域名

127.0.0.1 ssoserver.com
127.0.0.1 msb1.com
127.0.0.1 msb2.com

在server的配置文件中,修改Redis的服务地址

image.png

然后在simple中修改server的地址和redis服务的地址

image.png

然后分别启动服务测试即可

image.png

教程:在Spring Boot应用中集成OAuth 2.0认证 通过本教程,我们学习了如何在Spring Boot应用中集成和使用OAuth 2.0认证。从添加依赖、配置OAuth 2.0客户端信息,到配置Spring Security和创建控制器处理认证后的回调,这些步骤帮助开发者快速实现安全的认证机制,并保护应用程序的资源。 阅读详情

相关推荐

在Spring Boot中实现OAuth2.0认证

配置 OAuth2.0 客户端、设置 Spring Security 的 OAuth2.0 配置、创建控制器和视图都是实现这一认证流程的关键步骤。OAuth2.0 是一种用于授权的协议,它使得用户可以授权第三方应用程序访问他们在某服务提供商上的资源,而无需共享他们的凭据。在这个视图中,我们创建了一个登录链接,当用户点击时会重定向到 Google 的登录页面。大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!现在,可以运行 Spring Boot 应用程序,并在浏览器中访问。

微赚开发者技术分享博客 1553

SpringBoot集成Oauth2.0(密码模式)

SpringBoot集成Oauth2.0(密码模式)

m0_71817461的博客 5522

Claude Code多智能体协作:高效Token管理与AI编程团队构建

在AI辅助编程领域,多智能体协作系统正成为提升开发效率的新范式。其核心原理是通过角色化分工,让多个AI智能体模拟真实开发团队的工作流程,各司其职完成复杂任务。这种模式的技术价值在于突破单智能体的上下文限制,通过专业化分工实现更深度的代码理解和更高质量的输出。在实际应用场景中,架构师、后端开发、代码评审等智能体通过定义好的协议协同工作,将Token消耗转化为更有价值的产出。本文聚焦于基于Claude Code构建多智能体团队的方法论,深入探讨如何通过精细化配置和流程设计,实现Token的高效利用与AI编程范式

weixin_33726318的博客 483

SpringBoot整合OAuth2.0看完你就会了!

OAuth 2.0是一种开放的授权协议,它允许用户授权第三方应用访问其账户(或资源),而无需共享其用户账户凭据。在Spring Boot中,我们可以使用Spring Security的OAuth2.0模块来实现授权验证。

qq_41826150的博客 6879

SpringCloud+Vue3在线学习平台实战架构

微服务架构是应对高并发、高可用业务系统的主流技术范式,其核心在于服务拆分、治理与协同。SpringCloud作为Java生态最成熟的微服务解决方案,提供服务注册发现、配置管理、API网关、熔断限流等关键能力;Vue3凭借Composition API、响应式系统升级和TypeScript深度集成,显著提升复杂前端工程的可维护性与运行效率。二者结合构建的在线学习平台,不仅支撑课程发布、订单处理、实时互动等典型教育场景,更在真实生产环境中验证了稳定性、扩展性与可观测性。本文聚焦SpringCloud Aliba

weixin_29290379的博客 330

SpringCloud集成Oauth2.0看完这个基本就理解原理了

5.1 ResourceServerConfig配置类,通过继承 ResourceServerConfigurerAdapter 实现token令牌的拦截,此外,还需要配置token的生成方法,即TokenConfig配置类。因为我把所有的配置都丢到了nacos,nacos管理了所有服务的配置,主要是nacos的自动更新配置的功能比较方便,即修改配置之后,可以实现自动刷新,无需重启服务,但需要在使用配置类中添加@RefreshScope注解才生效。通过扫描注入的方式,注入MybatisPlus。

qq_36973384的博客 2481

SpringCloud Gateway与Sa-Token实现微服务统一鉴权

在微服务架构中,API网关是实现统一认证授权的关键组件。SpringCloud Gateway作为Spring生态的官方网关解决方案,配合轻量级权限框架Sa-Token,可以构建高效的分布式鉴权体系。该方案基于Token机制实现会话管理,利用Redis存储会话信息,确保微服务环境下的安全通信。通过注解式权限控制(如@SaCheckLogin)显著简化开发,相比传统Spring Security方案更轻量高效。典型应用场景包括电商系统的订单/商品服务隔离访问、企业内部系统的角色权限管理等。该架构尤其适合需要快

weixin_33861800的博客 367

基于 OAuth2.0 的 Spring Cloud 权限管理系统

在整理大部分同学的需求时候,迫切需要一个小而专的微服务系统。 全面兼容Spring Cloud 最新GA版本 Spring Boot 2.0.8.RELEASE 、Spring Cloud Finchley.SR2 、Spring Security OAuth2 1. 减少中间件依赖 2.0 依赖中间件只需要 mysql、redis 即可,提供傻瓜式部署方案,大大缩减了上手和使用成本。 2. 提供常见容器的支持 默认 提供docker-compose的支持,提供kubernetes (thx @毛子坤) 脚本支持。 3. 网关使用高性能 Spring Cloud Gateway ,摒弃 Zuul 1 4. Spring Cloud Config 默认本地文件,不再强制依赖Git管理 5. 全面重构资源服务器 整体接入OAuth2 提供标准专业的权限管理深度封装 spring security oauth2 只需要继承封装类,即可接入OAuth2 6. ORM 全面使用 Mybatis Plus 3,采用lambda 重构 7. 全面重构业务代码 使用lambda、stream、 lombok 重构,优雅简单 8. 前端重构 前端全面使用自研Avue,同时兼容和传统element-ui 混开,一行代码渲染出CRUD,解决后端工程师写vue的难题

SpringCloud微服务实战:mall4cloud电商系统本地部署与避坑指南

微服务架构通过将单体应用拆分为一组小型、独立的服务,实现了系统的高内聚、低耦合与独立部署。其核心原理围绕服务注册发现、配置中心、API网关等组件展开,旨在提升开发效率、增强系统可扩展性与容错能力。在电商等高并发场景中,微服务架构的价值尤为凸显,能够支撑商品、订单、支付等复杂业务模块的快速迭代与弹性伸缩。本文以开源电商系统mall4cloud为例,结合Docker Compose与Nacos等工具,详细解析从环境准备、中间件部署到服务启动的全流程实践,并针对服务注册失败、数据库连接异常等常见问题提供深度排查方

weixin_34025151的博客 409

vue3的面试题

vue3的面试题

jiang7701037的博客 6268

NVMe-MI --- Message Servicing Model(消息服务模型)

本文主要介绍NVMe-MI消息服务模型,两个主要类别是请求消息和响应消息。并介绍带外机制消息服务状态机。

智小星的博客 2014

手把手部署SpringCloud Alibaba微服务电商项目:从环境搭建到服务启动

微服务架构通过将单体应用拆分为多个独立部署、松耦合的服务,提升了系统的可扩展性和可维护性。其核心原理围绕服务注册发现、配置管理、API网关和分布式事务等关键技术展开。这种架构模式在电商、金融等高并发、复杂业务场景中具有重要价值,能够支持快速迭代和弹性伸缩。本文以SpringCloud Alibaba技术栈为基础,结合Nacos、Seata等核心组件,详细解析一个完整微服务电商项目(如mall4cloud)的本地环境部署全流程。内容涵盖Docker容器化部署中间件、多模块项目结构解读、核心配置深度解析以及服务

weixin_33766805的博客 364

FANUC机器人RSR与PNS功能深度解析及实战应用指南

本文深度解析了FANUC机器人RSR(远程程序启动)与PNS(程序号选择)两大核心功能。文章详细阐述了RSR的队列执行机制与PNS的二进制编码原理,提供了从硬件连接到参数配置的完整实战指南,并分享了混合使用策略与常见故障排除方法,旨在帮助工程师实现高效、稳定的生产线自动化程序调度。

neovim7hacker的博客 312

【业务功能篇98】微服务-springcloud-springboot-电商订单模块-接口幂等性处理-订单提交防重检查-Fegin调用远程服务的时候会出现请求Header丢失的问题及解决方案

我们需要把相关的静态资源拷贝到nginx,然后动态模板文件拷贝到order项目的templates目录下,然后调整资源的路径。在网关中设置对应的路由即可。

studyday1的博客 458

天线学习笔记——HFSS简单阵列天线

在HFSS15.0版本中使用 Radiation --> Antenna Array Setup 设置天线阵列的参数时的设计列表如下: 值得注意的是,在该版本中所定义的是:第一个阵元的位置坐标(First Cell Position)、阵元之间的间距(Directions)和阵元的数量(Number of Cells) 这些参数。 在ANSYS中的HFSS仿真中定义天线阵列如下: 与老版本不同的是:中心点坐标(Center Position)和布局设置(Layout Setting)。在布局设置中

Ethan的博客 1万+

飞思卡尔16位单片机(二)——CodeWarrior开发环境搭建及新建、调试工程

一、安装CodeWarrior 飞思卡尔16位单片机的开发环境为CodeWarrior5.1,这个软件安装比较简单,软件的安装文件可以从相应的网站上下载。安装CodeWarrior所需要的电脑的硬件资源也比较宽泛,目前一般的电脑都可以满足这个要求,可以支持win10、win7等操作系统。安装过程按照按照软件的提示一步步操作即可。 二、安装USBDM驱动 USBDM是...

bigmarshal的博客 1万+

前后端分离架构下Sa-Token认证授权实践指南

在现代Web开发中,前后端分离架构已成为主流技术方案,这种架构下的认证授权机制面临跨域通信、无状态会话管理等核心挑战。JWT和OAuth2.0等标准协议虽然提供了基础解决方案,但在实际工程落地时仍需处理令牌管理、权限控制等具体问题。Sa-Token作为轻量级Java权限认证框架,通过自动续期Token、注解式权限控制等特性,显著降低了分离架构的安全实现复杂度。该框架特别适合SpringBoot+Vue等技术栈的中大型项目,能有效解决接口级权限校验、分布式会话同步等典型场景需求。本文通过企业级项目实战,详解如

weixin_30315723的博客 397

SAP FICO 资产会计AA后台配置 (上)

输入折旧表“CZ11”如有外币计价的资产,则需指定外币计价的资产折旧范围,以及规则。因为在设置资产类型时,需指定一个对应的 资产编号范围、资产账户确定类型(便于分配自动会计科目)、屏幕格式规则(便于设置资产字段必填与否)。因为在设置资产类型时,需指定一个对应的 资产编号范围、资产账户确定类型(便于分配自动会计科目)、屏幕格式规则(便于设置资产字段必填与否)。新增资产类型:Z101 固定资产-房屋及建筑物新增资产类型:Z301 固定资产-房屋及建筑物。

ghgxm520的博客 1762

练功秘籍---A

常用整理

CarryBest的博客 1650

用 ABAP CDS View 把数据稳定抽到 SAP BW/4HANA:从 ODP 架构到增量机制的落地实践

本文探讨了SAP数据仓库中从业务系统抽取数据到SAP BW/4HANA的最佳实践,重点分析了基于ABAP CDS视图的抽取方法。文章指出CDS视图通过注解可实现元数据描述、增量机制的统一管理,替代传统抽取器。详细介绍了ODP架构如何作为抽取基础设施,以及从CDS到BW的完整链路。同时比较了三种增量抽取方式(BW管理时间戳、ODP通用增量、CDC触发器)的适用场景和注意事项,并强调版本兼容性和云环境连接差异对实施的影响。通过实际案例说明合理选择增量策略对数据仓库稳定性的重要性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 332

MOS管驱动电路设计全攻略

MOS管驱动电路设计全攻略

让你爱上电路设计 3635

springboot整合springsecurity+oauth2.0密码授权模式

本文采用的springboot去整合springsecurity,采用oauth2.0授权认证,使用jwt对token增强。本文仅为学习记录,如有不足多谢提出。

qq_45072555的博客 7706

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

SpringBoot整合OAuth 2.0

OAuth 2.0为OAuth的协议的延续版本,是一个关于授权的开放网络标准,在全世界得到广泛应用。基于OAuth 2.0授权有一下几个特点:1、安全:平台商无需使用用户的用户名与密码就可以申请获得该用户资源的授权;2、开放:任何消费方都可以使用 OAuth 认证服务,任何服务提供方 ( Service Provider) 都可以实现自身的 OAuth 认证服务。3、简单:不管是消费方还是服务提供...

xjj1040249553的专栏 4759

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Spring Boot 最新版3.x 集成 OAuth 2.0实现认证授权服务、第三方应用客户端以及资源服务

Spring Boot 3已经发布一段时间,网上关于Spring Boot 3的资料不是很多,本着对新技术的热情,学习和研究了大量Spring Boot 3新功能和新特性,感兴趣的同学可以参考Spring官方资料全面详细的新功能/新改进介绍新特性有很多,本文主要针对OAuth 2.0的集成,如果快速开发自己的认证授权服务、OAuth客户端以及资源服务新建三个服务,分别对应认证授权服务、OAuth客户端以及资源服务Spring发布了spring-security-oauth2-authorization-se

Java技术栈,分享不断学习、不断超越、不断积累的历程! 2万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

SpringBoot整合OAuth2

资源拥有者扫描二维码表示资源拥有者同意给客户端授权,微信会对资源拥有者的身份进行验证, 验证通过后,微信会询问用户是否给授权黑马程序员访问自己的微信数据,用户点击“确认登录”表示同意授权,微信认证服务器会颁发一个授权码,并重定向到黑马程序员的网站。完全是A服务与B服务内部的交互,与用户无关了。第一步:【A服务客户端】将用户自动导航到【B服务认证服务】,这一步用户需要提供一个回调地址,以备【B服务认证服务】返回token使用,还会携带一个【A服务客户端】的状态标识state。

xwnxwn的专栏 2298

微服务实战——登录(普通登录、社交登录、SSO单点登录)

1)、@EnableRedisHttpSession导入RedisHttpSessionConfiguration.class配置1、给容器中添加了一个组件SessionRepository=》》》 【RedisIndexedSessionRepository】=>redis操作session.session的增删改查的封装类2、SessionRepositoryFilter=》Filter: session存储过滤器,每个请求过来都必须经过filter。

qq_63275583的博客 2443
上一篇: 【业务功能篇95】web中的重定向与转发
下一篇: 【业务功能篇97】微服务-springcloud-springboot-电商购物车模块-获取当前登录用户的购物车信息
studyday1
博客等级 码龄9年 6454粉丝 255原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值