JwtToken使用

最近在做一个app,登录验证是用的jwt的token验证,今天来记录一下.....

下面是具体步骤

1.添加jar包

然后是jwt token的具体实现

三个常量分别是

  • 保存在服务端的密钥
  • jwt令牌的有效时间
  • 刷新令牌的有效时间

jwt内置了许多加密编码,我这里采用Hs256加密,将自己设定的特有密码进行base编码,生成一个key

这一段是生成一个usertoken

  • jwt token包含三部分 分别是header,payload(载荷),sign(签名)
  • header用来设置自己token的类型和使用的编码,payload存放用户的安全信息,因为jwt提供的编码是可逆的,所以不要存放用户的关键信息
  • sign是token的一个签名,由headr,payload以及key决定,当客户端发来一个key的时候,只要校验签名是否正确即可

这一段代码和上一张图在同一个方法内,主要用于实现令牌的刷新,本来刷新时间应该存放在redis里,但是我条件有限,只能先存放在数据库中

token的校验从传来的token中获得载荷payload,重新生成一个token,拿到新token的签名sign,将新的sign和旧sign比较,当两个sign一致时则通过验证

这一段代码和上一段在同一个方法内,当连个sign不一致时说明客户端token被篡改,直接返回一个null,在拦截器中做判断当为null时直接回到登陆界面

当t oken过期 ExpiredJwtException e 会自动捕获,我们在捕获到这个异常时,进行令牌的刷新,然后返回这个新的令牌

两个sign一致就直接返回原先的token。

令牌的刷新将之前存放在数据中刷新有效时间取出,与当前时间进行比较,如果小于当前的刷新有效时间则刷新令牌,然后更新数据库,返回新的token字符串,

如果该用户连已经长时间未使用app,导致当前时间已经超过了令牌刷新的时间,则删除数据库中的对应数据,token返回null;

客户端的token是放在request的header中发到后台的,所以需要从heaer中取出

拿到的token是这样子的,所以需要对这个字符串按照空格截取,拿到真正有用的token

我们拿到校验返回过来的字符串,当这个字符串为空时,客户端返回到登陆界面

当两个token不相等时,说明校验传回来的token是新的,那么我们修改响应头中token为新的token,然后程序继续执行

........

第一次使用jwt,对jwt安全性还很不了解......只能先这样了

以上为个人经验,希望能给大家一个参考,也希望大家多多支持Devmax。

关于JwtToken使用-重点看一下过期时间的更多相关文章

  1. 如何使用iOS SDK保存LinkedIn访问令牌?

    我在我的iOS应用程序中使用LinkedIn.我想保存访问令牌以供将来使用.令牌属于非属性类型,无法直接保存在NSUserDefaults中.我尝试使用NSKeyedArchiver,但我得到了输出:令牌中的文本即将到来,但值将为空.代码段1:我也尝试像这样保存,但结果是一样的:代码段2:我的编码或访问令牌有什么问题需要一些特殊技术来保存吗?请建议.解决方法这就是我拯救的方式.它对我有用.希望它有所帮助以这种方式使用保存的responseBody我希望这次我很清楚

  2. IOS Facebook身份验证使用node.js passport-facebook-token

    我正在尝试使用来自IOS应用程序的passport-facebook-token对node.jsapi进行身份验证.我有用户名和密码验证设置,并通过护照和护照-facebook-token设置正常工作.我只是无法弄清楚将访问令牌发送到API所需的HTTP请求语法.任何帮助都将受到大力赞赏.谢谢.解决方法确定设法从passport-facebook-token的策略文件中找出答案这个需要:http://URL?access_token=[访问令牌]从IOS我只是用以下方法测试:希望这有助于其他人.

  3. 解析条纹iOS main.js

    我真的很难让ParseStripe在我的项目中工作.此时,我想要最简单的工作版本,允许我向用户收费.我找到答案的最接近的事情如下:SimplestExampleI’veFound当我使用上面链接中的更正代码时,我的秘密得到以下错误:请帮助=**(这太令人沮丧了.————-更新—————-其他一些帖子也有类似的错误,看起来最新版本的ParseCloud代码应该归咎于:1.6.0.在控制台视图中使用以

  4. 基于Swift语言开发微信、QQ和微博的SSO授权登录代码分析

    一,总体架构1,引入第三方库除了必须引入对应的登录SDK外,额外引入了SDWebImage,SVProgressHUD,看名字大家都明白吧,引入登录SDK请各自看官方的开发文档,需要加入什么系统库文件,需要配置OtherLinkerFlags等,请参考各自官方文档即可;2,配置连接桥文件因为创建的工程是基于Swift语言,目前官方SDK和其它三方库都是用OC写的,所以为了在swift中调用oc代码

  5. 基于Swift语言开发微信、QQ跟微博的SSO授权登录代码分析

    转自:http://www.myexception.cn/swift/1991018.html前言Swift语言,怎么说呢,有一种先接受后排斥,又欢迎的感觉,纵观国外大牛开源框架或项目演示,Swift几乎占据了多半,而国内虽然出现很多相关技术介绍和教程,但是在真正项目开发中使用的占据很少部分,原因一是目前熟练它的开发者并不多,二是版本不太稳定,还需要更成熟可靠的版本支持,但总之未来还是很有前景的,

  6. Swift3 单例模式

    常见的有这么几种方法第一种最简单也是最常用的,这里的所有单例init方法一定要定义成private的,不然外部依然可以使用init方法初始化变量。final关键字的作用是这个类或方法不希望被继承和重写第二种第二种完全是OC风格的单例,但是由于Swift3中废弃了原来的dispatch_once_t,所以需要先给dispatchQueue添加一个extension,实现原先的dispatch_once_t效果第三种第四种在方法内定义静态变量

  7. 微信三方登录相关(Swift)

    微信登录条件1.微信开放平台注册并认证成功2.相关应用的微信的APPID和secret3.遵循微信代理WXApiDelegate使用处编写相关登录代码WXApi.registerappletreq=SendAuthReq.init()req.scope="snsapi_userinfo"req.state="wulianwang"WXApi.send在回调方法中处理相关业务funconResp(_resp:BaseResp!,options:.mutableContainers)/**正确时返回的JSON

  8. 如何替换位置代码使Swift 3兼容?

    我有以下类,它有方法getNextToken迭代数组项:但我有一个来自编译器的警告消息,将在Swift3中弃用我应该如何重写我的代码让方法在当前位置返回数组项并在此之后增加位置?添加一个行位置=1的标准建议不适合这里,因为我在评估令牌时正在退出范围[位置]延迟可用于增加位置变量在计算返回值之后:

  9. 如何使用Swift检查iOS设备是否被锁定/解锁?

    如何使用Swift检测锁定/解锁的iOS设备(如Android中的SCRENON/SCREENOFF)我使用以下来创建相同的想法.您需要使用桥接器将目标c代码用于swift.HereistheLinkforcreatethebridgebetweentheObjectivectoSwift.完成后,您可以将以下.h文件添加到您的项目–桥接–标题中.文件添加yourcontroller.h然后将No

  10. 如何在Swift中执行一次代码只执行一次?

    到目前为止我所看到的答案建议使用GCD的dispatch_once:输出:但等一下.token是一个变量,所以我可以很容易地做到这一点:输出:因此,如果我可以更改令牌的值,dispatch_once是没用的!有一种更安全的方式只执行一次代码吗?由闭包初始化的静态属性是懒惰运行的,最多只运行一次,所以这只打印一次,尽管被调用了两次:示例运行:

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部