登录功能中使用(Eureka 注册中心+Zuul网关 + 过滤器 +JWT 生产Token)整合

in 编程
关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9

一, 首先创建项目,分对应模块

整体架构图

二, 在公共工具中导入pom.xml依赖(包含JWT相应依赖),

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
    </dependency>
    <!--lombok-->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.20</version>
    </dependency>
    <!--jwt依赖-->
    <dependency>
        <groupId>commons-beanutils</groupId>
        <artifactId>commons-beanutils</artifactId>
        <version>1.9.3</version>
    </dependency>
    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt</artifactId>
        <version>0.9.0</version>
    </dependency>
    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>2.9.7</version>
    </dependency>
</dependencies>

(2)公共工具中需要拷贝两个工具类

 

 

三, ,要想使用网关路径和JWT需要在网关中,导入相应pom.xml文件的依赖

<properties>
        <jwt.jjwt.version>0.9.0</jwt.jjwt.version>
        <jwt.joda.version>2.9.7</jwt.joda.version>
        <lombok.version>1.16.20</lombok.version>
        <beanutils.version>1.9.3</beanutils.version>
    </properties>

    <dependencies>
        <!--网关依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
        </dependency>
        <!--测试-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
        <!--添加eureka客户端-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
<!-- 导入公共工具-->
       <dependency>
            <groupId>com.czxy.examqm</groupId>
            <artifactId>exam_common2</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

(2)同理user服务也导入响应的JWT依赖(直接使用公共工具即可)

<!--引用公共工具类-->
    <dependency>
        <groupId>com.czxy.examqm</groupId>
        <artifactId>exam_common2</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
</dependencies>

 

(3)配置网关yml文件

# 服务端口号
server:
  port: 10010
# 服务名
spring:
  application:
    name: zuuldemo2
#网关配置: 访问路径 和 服务路径 对应关系
zuul:
  prefix: /api      #前缀
  #routes:
   # userService: /userService/**
      # path: /userService/**        #访问路径
      # url: http://localhost:8090   #服务路径
      # serviceId: userService      #服务名称
 #注册地址
eureka:
  client:
    service-url:
      defaultZone: http://localhost:10086/eureka

 

四, 保证本地有RAS文件

代码生成:

private  static  final String pubKeyPath="E:\\ras\\ras.pub";
private static  final String priKeyPath="E:\\ras\\ras.pri";

@Test
    public void testGen() throws Exception {
    //生产公钥和私钥
    RasUtils.generateKey(pubKeyPath,priKeyPath,"234");
}

 

五. 实现

 

 

六 ,如果前端想实现,未登录就自动跳转回登录页面,已登录则放行,

需要在前端router的index.js文件中配置 全局前置守卫

router.beforeEach((to, from, next) => {
        if(to.path=='/login'){
        next()
        return
        }
        let a=sessionStorage.getItem("token")
        if(a){
        next()
        }else{
        next("/login")
        }
        })

 

最终 ,对应网关路径测试即可 http://localhost:10010/api/userservice/user/login 

 

 

请给努力中的自己点个赞哦!

每天进步一点点`~~~~~

 

 

关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9
扫一扫关注公众号添加购物返利助手,领红包
Comments are closed.

推荐使用阿里云服务器

超多优惠券

服务器最低一折,一年不到100!

朕已阅去看看