JWT结合Springboot+shiro,session、token同时存在来应对不同的业务场景(物联网设备管理及开放api)...

本文介绍了如何在物联网设备管理平台中结合JWT和Springboot,以及如何排除Shiro控制,以适应不同的业务场景。通过JWT进行API授权,并详细阐述了JWT的结构和JJWT的使用,以及与Springboot的整合过程,包括拦截器的设置和Shiro的配置调整。
摘要由CSDN通过智能技术生成

一、背景说明

    需求是这样滴:对物联网终端设备以及网关设备进行统一的管理,这里需要一个设备管理平台,同时呢,计划开放API,以供应用开发者调用API来管理控制设备。设备管理平台本身的用的是传统的session来管理,设备管理者数量并不多,所以不会有超量的session给服务器造成太大的压力。开放API给第三方应用用户是为了应对第三方用户开发的各种移动端app以及需要自身维护的设备管理。所以用session就不是那么合适,计划采取token的方式。

    多年以前我用过token这种方式来开发,那时候似乎还没有jwt这个框架,我记得是根据用户名密码生成token后存在数据库中的,每次token进来是需要从数据库中或者提前缓存的token池中来找到匹配的token以确保不是非法请求。

    闲话多了,看看正题。

二、JWT以及JJWT介绍

首先呢,我们可以通过这里来看看JWT是个什么样的东西:https://jwt.io/introduction/  官方说的很清楚了,我就用我蹩脚的英文来给大家解释下:

1、什么是JSON Web Token?

    JSON Web Token (JWT)是一个开放的标准(RFC 7519),它定义了一种简洁独立的方式,以JSON对象的形式在各方之间安全地传输信息。

2、什么时候使用JWT呢?

    授权和信息交换的时候

3、JWT结构介绍

    JWT说白了,就是一串字符串,包含三个部分,三部分之间用“.”来分割。三部分分别是:

  • Header
  • Payload
  • Signature

    最后形成的字符串就像这样:xxxxx.yyyyy.zzzzz

    Header大概就是这样的:

{
  "alg": "HS256",
  "typ": "JWT"
}

    payload就是放内容的,官方叫做claims,这个是啥玩意呢?这玩意是声明一些实体,包括jwt自己已经定义好的特色的声明,还有一些用户加上的声明(我们这些开发者想加上的)以及一些附加数据

    这玩意有三种类型,分别是 registeredpublic, and private claims. Registered Claims就是官方已经定义了的,比如:iss (issuer), exp (expiration time), sub (subject), aud

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值