`
cywhoyi
  • 浏览: 420105 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Vert.x3支持JWT

阅读更多

知识背景:

              那年还是菜鸟,开始暗恋Java,像其他的菜鸟一样开始慢慢接触面向对象,硕士之前接触都是c、c++,其实对于面向对象的理解停留在认知阶段,后来自嘲没有女朋友,我可以new一个出来,现在有暗恋开始明恋,到然后喜欢上python,不过自从接触vert.x3和RXJava、netty后,又再次燃烧起我的欲望,最近接收需要为app提供微服务,对于无状态的,没有session、cookie,我们唯一能够提供的方式就是token,JSON Web Tokens(JWT).

           JWT生成的token150个字符

 

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE0NTEzMDQ3OTgsImV4cCI6MTQ1MTMwNDg1OH0=.5kK9_8s1ZyGZ-6EBN1wF01Mzxw1g-WZQzYXSFC_C41Y=

           我们通过这个token进行交换,来进行权限的验证,是否该用户能否访问我们的服务端数据。

 

http://self-issued.info/docs/draft-ietf-oauth-json-web-token.html

           我把token的放入我的redis中,存放时间为一分钟,然后加入refreshtoken存放10分钟,一般来说refreshtoken肯定比token时间要长,因为你还需要通过refreshtoken来获取token,refreshtoken是经过md5加密后,进行存放。

 

 // this route is excluded from the auth handler
        router.get("/api/newToken").handler(ctx -> {
            ctx.response().putHeader("Content-Type", "text/plain");

            String generateToken = jwt.generateToken(new JsonObject(), new JWTOptions().setExpiresInSeconds(1 * 60));
            ctx.response().end(generateToken);
            redisCacheService.put("token", generateToken, 1 * 60);
            byte[] result = Base64.encodeBase64(generateToken.getBytes());
            System.out.println(" refreshToken " + new String(result));
            System.out.println(" token " + generateToken);
            redisCacheService.put(new String(result), generateToken, 10 * 60);
        });

 

        router.get("/refreshToken").handler(ctx -> {
                    ctx.response().putHeader("Content-Type", "text/plain");
                    ctx.response().end(redisCacheService.get(""));
                }
        );

 

 

至于需要鉴权校验,需要使用到如下的包

 

    <!-- spring-boot framework end-->
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>${jjwt.version}</version>
        </dependency>
        
        <dependency>
            <groupId>io.vertx</groupId>
            <artifactId>vertx-auth-jwt</artifactId>
            <version>${vertx.version}</version>
        </dependency>

  

 

 

  Router router = Router.router(vertx);


        router.route("/*").handler(SoloAuthProvider.create(vertx, redisCacheService));

        router.route("/*").handler(req -> {
            LOGGER.info("Any requests to URI starting '/' require login");
            // No auth required
            req.next();
        });

        // Create a JWT Auth Provider
        JWTAuth jwt = JWTAuth.create(vertx, new JsonObject()
                .put("keyStore", new JsonObject()
                        .put("type", "jceks")
                        .put("path", "keystore.jceks")
                        .put("password", "secret")));
 

 

 

至于vert.x3如何使用就不在这里过多叙述,在前面的文章已有聊过。

 

个人结论:

       app的微服务校验这块完成后,接下来都是业务功能的开发,至于你是用spring、spring-boot以及mybatis还是其它的ORM不外乎就是增删改处理工作。

 

 

 

ps:有提供坐标杭州或者上海的公司的架构岗位,请随时联系本人,具体联系方式可以访问http://ibyoung.github.io

1
1
分享到:
评论
3 楼 君淋天下 2016-02-23  
Vert.x用来做移动应用的服务端框架和应用服务器?
2 楼 cywhoyi 2015-12-29  
string2020 写道
jwt是什么?

JSON Web Tokens
详细地址
1 楼 string2020 2015-12-28  
jwt是什么?

相关推荐

    Vert.x 4 核心手册中文版

    Vert.x 支持部署和取消部署 Verticles,便于动态调整应用结构。 5. **DNS 客户端**: - 提供 DNS 查询功能,方便应用处理域名解析问题。 6. **文件系统访问**: - 支持读写文件、目录操作,满足应用对本地文件...

    vert.x中文 PDF 下载

    3. **模块化设计**:vert.x 支持模块化的应用结构,使得组件之间解耦,易于维护和扩展。你可以通过`vertx.createHttpServer()`等工厂方法创建不同的服务模块,如HTTP服务器、TCP服务器、WebSocket服务器等。 4. **...

    Vert.x应用开发实例教程

    Vert.x是事件驱动的,其处理请求的高性能也是基于其事件机制。Vert.x的事件机制中有几个非常重要的概念:Event Loop、Event Loop Vertical、Worker Vertical、Event Bus、Vert.x Module。 Event Loop:即事件循环,...

    vert.x-2.1.2

    - **反应式编程**:vert.x 支持反应式编程范式,这意味着系统会根据输入的变化自动调整,无需显式控制流。这有助于构建可扩展和容错的应用程序。 - **模块化架构**:vert.x 应用由多个独立的模块(verticles)组成...

    vert.x结合springboot开发mqtt服务,真实可用

    Vert.x 支持多种编程语言,包括Java、JavaScript、Ruby等,且具有高度的可扩展性和灵活性。 Spring Boot是Spring框架的简化版,旨在简化创建独立的、生产级别的基于Spring的应用程序。它集成了大量常用功能,如...

    vert.x 3.3.3

    与Node.js相比,Vert.x提供了更多的语言支持,包括Java、JavaScript、Ruby、Groovy和 Kotlin,同时利用了Java虚拟机(JVM)的优势。 【描述】提到"比Node.Js更快",这可能是因为Vert.x利用了JVM的并发模型,如Event...

    Vert.x学习

    Vert.x的核心设计理念是提供一个轻量级的运行时环境,支持多种编程语言,包括Java、JavaScript、Ruby、Groovy等,使得开发者可以灵活地选择适合项目需求的语言。 【描述】"源码下载 博文链接:...

    vertx-kue, Vert.x Blueprint项目 Vert.x Kue,这是由 Vert.x 支持的优先级任务队列.zip

    vertx-kue, Vert.x Blueprint项目 Vert.x Kue,这是由 Vert.x 支持的优先级任务队列 Vert.x Kue Vert.x Kue 是用 Vert.x 开发的优先级任务队列,并以的Redis支持。 它是 automattic/kue的Vert.x 实现版本。这个蓝图...

    基于Vert.x(java)开发的API网关,是一个分布式,全异步,高性能,可扩展,轻.zip

    4. **分布式**:Vert.x支持跨多个节点的事件总线通信,使得构建分布式系统变得更加简单。它可以轻松地与其他微服务进行交互,实现横向扩展。 5. **可扩展**:Vert.x允许开发者用Java、JavaScript、Ruby、Groovy等...

    Vert.x 初始demo

    ** Vert.x 概述 ** Vert.x 是一个轻量级、高性能且反应式的应用开发框架,主要用于构建现代的、事件驱动的、非阻塞式的Java应用程序。它支持多种编程语言,包括Java、JavaScript、Ruby、Groovy和 Kotlin,提供了一...

    Vert.x配置项VertxOptions的使用

    - **功能**:设置Vert.x实例中支持的Worker线程的最大数量。 - **默认值**:20。 - **应用场景**:Worker线程主要用于执行阻塞任务,例如数据库访问、文件I/O等。合理配置Worker线程的数量对于确保良好的响应时间和...

    Vert.x线程模型揭秘

    与Node.js相比,Vert.x更加灵活,因为它支持多种编程语言如JavaScript、Ruby、Groovy、Java等,甚至可以在同一项目中混合使用这些语言。 #### 二、Vert.x的核心概念 为了更好地理解Vert.x的线程模型,我们首先需要...

    vertx应用开发实例教程-完整版

     《Vert.x应用开发实例教程》旨在为Vert.x的初学者和大中专院校学生提供易于入门,全面了解和掌握Vert.x框架技术和应用的教材和辅导资料,为使用Vert.x开发实时应用和企业级应用打下良好的基础。

    使用Eclipse_Vert.x开发响应式应用_英文.pdf

    2. **多语言支持**:虽然主要用Java编写,但Vert.x 提供了API接口,支持其他如JavaScript、Ruby、Groovy、Ceylon等多种语言,这使得开发人员可以选择他们最熟悉的语言进行开发。 3. **模块化系统**:Vert.x 允许...

    Java vert.x微服务框架资料

    - **多语言环境:** Vert.x 支持多种语言,包括 Java、Groovy、Ruby、Scala、JavaScript 等,这使得开发者可以根据项目需求选择最适合的语言进行开发。 **2.5 数据库集成** - **数据访问:** Vert.x 提供了对多种...

    vert.x-springboot模版项目

    vert.x是内存占用极小的快速开发框架,springboot模版项目

    Vert.x3异步框架实战

    摘要:作为异步无阻塞的网络框架,Vert.x的参照物是Node.js,基本可以完成Node.js能完成的所有事情。它是作者目前见过功能最强大,依赖第三方库最少的Java框架。本文将带你深入了解Vert.x。Vert.x的由来Vert.x诞生于...

    Vert.xguide-for-java-devs.pdf

    Eclipse Vert.x is event driven and non blocking. This means your app can handle a lot of concurrency using a small number of kernel threads. Vert.x lets your app scale with minimal hardware.

    Vert.x for Java 开发者

    Vert.x是一个基于事件驱动模型的轻量级框架,支持多种语言(如Java、Groovy等),其核心特性包括: - **高性能与可伸缩性**:能够高效处理高并发请求。 - **异步编程模型**:通过非阻塞I/O提高应用程序的整体性能。 ...

Global site tag (gtag.js) - Google Analytics