【SpringCloud-Alibaba系列教程】13.gateway网关结合Sa-token进行登录鉴权

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 本文是对网关内容的拓展,进行鉴权部分的实现。

引出问题

在介绍【SpringCloud-Alibaba系列教程】10.gateway网关的时候文章末尾简单说了一下实现的鉴权功能,本文结合比较火的sa-token权限框架,进行整合,实现登录逻辑。看到本文,建议按照发文顺序阅读,方便理解我写的部分以及内容,本文实现的需求就是,首先进行统一在网关登录,然后调用shop-auth,然后在进行访问商品微服务shop-product,如果没登录,就查询不到进行相关提示,如果登录了就可以查询到了,现在我们开始。

我们开始吧

首先我们再次借用上次的图。
fbbbff3d12b8c3a21eb8f321a9e8078e_94a3ec0db1b74a548f679ad9e5232d4e.png
大家可以看到有一个授权中心的东西,其实就是授权实现。
我们下面来进行搭建。还是老样子我们创建一个Model
image.png
image.png
然后进行shop-auth编写了。
首先就是创建相关包以及application如图。
image.png
我们再认证中心根据sa-token官方文档进行整合就可以了
image.png
然后主要就是相关的yml配置
server:
port: 8101
spring:
application:

name: service-auth

# redis配置
redis:

# Redis数据库索引(默认为0)
database: 1
# Redis服务器地址
host: 127.0.0.1
# Redis服务器连接端口
port: 6379
# Redis服务器连接密码(默认为空)
# password:
# 连接超时时间
timeout: 10s
lettuce:
  pool:
    # 连接池最大连接数
    max-active: 200
    # 连接池最大阻塞等待时间(使用负值表示没有限制)
    max-wait: -1ms
    # 连接池中的最大空闲连接
    max-idle: 10
    # 连接池中的最小空闲连接
    min-idle: 0

datasource:

driver-class-name: com.mysql.cj.jdbc.Driver #版本看自己数据库版本安装
url: jdbc:mysql://localhost:3306/shop?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&userSSL=true
username: root
password: 123456

jpa:

properties:
  hibernate:
    hbm2ddl:
      auto: update
    dialect: org.hibernate.dialect.MySQL8Dialect
show-sql: true

cloud:

nacos:
  discovery:
    server-addr: localhost:8848

下面就是网关了。

image.png
进行satoken的配置类
然后就是yml的配置了
image.png
这个框架的好处就是可以注解鉴权
我们只需要在productcontroller加上注解就可以达到鉴权的目的。
image.png
下面就是验证部分了,首先我们把所有服务启动。
image.png
首先我们就是和【SpringCloud-Alibaba系列教程】10.gateway网关这个登录鉴权一样进行查看。
http://localhost:7000/product-serv/product/1
image.png
我们可以看到框架的提示,然后我们进行auth认证。
http://localhost:7000/auth/user/doLogin?username=zhang&password=123456
image.png
然后我们再次访问http://localhost:7000/product-serv/product/1
image.png
这样就完成了,当然,我们可以在redis也可以看到相关信息。
image.png
这样就实现了我们的登录鉴权,相关文档可以参考sa-token的文档。
这样是比较方便的,和Spring Security相比还是比较简单的,后续会集成Spring Security的相关文章介绍。
这就是鉴权的基本实现了,如果更加细致的使用还是需要根据业务情况进行更改。
后期会在这个项目上不断添加,喜欢的请点个start~
项目源码参考一下分支220303_xgc_gatewayAndSatoken
Gitee:https://gitee.com/coderxgc/springcloud-alibaba
GitHub:https://github.com/coderxgc/springcloud-alibaba

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
26天前
|
JSON Java API
利用Spring Cloud Gateway Predicate优化微服务路由策略
Spring Cloud Gateway 的路由配置中,`predicates`​(断言)用于定义哪些请求应该匹配特定的路由规则。 断言是Gateway在进行路由时,根据具体的请求信息如请求路径、请求方法、请求参数等进行匹配的规则。当一个请求的信息符合断言设置的条件时,Gateway就会将该请求路由到对应的服务上。
137 69
利用Spring Cloud Gateway Predicate优化微服务路由策略
|
27天前
|
SpringCloudAlibaba JavaScript Dubbo
【SpringCloud Alibaba系列】Dubbo dubbo-admin安装教程篇
本文介绍了 Dubbo-Admin 的安装和使用步骤。Dubbo-Admin 是一个前后端分离的项目,前端基于 Vue,后端基于 Spring Boot。安装前需确保开发环境(Windows 10)已安装 JDK、Maven 和 Node.js,并在 Linux CentOS 7 上部署 Zookeeper 作为注册中心。
【SpringCloud Alibaba系列】Dubbo dubbo-admin安装教程篇
|
1月前
|
JavaScript Java Kotlin
深入 Spring Cloud Gateway 过滤器
Spring Cloud Gateway 是新一代微服务网关框架,支持多种过滤器实现。本文详解了 `GlobalFilter`、`GatewayFilter` 和 `AbstractGatewayFilterFactory` 三种过滤器的实现方式及其应用场景,帮助开发者高效利用这些工具进行网关开发。
252 1
|
2月前
|
负载均衡 Java 应用服务中间件
Gateway服务网关
Gateway服务网关
75 1
Gateway服务网关
|
2月前
|
负载均衡 Java API
项目中用的网关Gateway及SpringCloud
Spring Cloud Gateway 是一个功能强大、灵活易用的API网关解决方案。通过配置路由、过滤器、熔断器和限流等功能,可以有效地管理和保护微服务。本文详细介绍了Spring Cloud Gateway的基本概念、配置方法和实际应用,希望能帮助开发者更好地理解和使用这一工具。通过合理使用Spring Cloud Gateway,可以显著提升微服务架构的健壮性和可维护性。
67 0
|
3月前
|
API 微服务
Traefik 微服务 API 网关教程(全)
Traefik 微服务 API 网关教程(全)
|
4月前
|
负载均衡 Java Nacos
SpringCloud基础2——Nacos配置、Feign、Gateway
nacos配置管理、Feign远程调用、Gateway服务网关
SpringCloud基础2——Nacos配置、Feign、Gateway
|
4月前
|
负载均衡 Java 网络架构
实现微服务网关:Zuul与Spring Cloud Gateway的比较分析
实现微服务网关:Zuul与Spring Cloud Gateway的比较分析
219 5
|
4月前
|
Java 开发者 Spring
Spring Cloud Gateway 中,过滤器的分类有哪些?
Spring Cloud Gateway 中,过滤器的分类有哪些?
109 3
|
3月前
|
负载均衡 Java API
【Spring Cloud生态】Spring Cloud Gateway基本配置
【Spring Cloud生态】Spring Cloud Gateway基本配置
72 0