加入收藏 | 设为首页 | 会员中心 | 我要投稿 济宁站长网 (https://www.0537zz.cn/)- 行业智能、边缘计算、专有云、AI硬件、5G!
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

Golang不到100行实现一套灵活的JWT库

发布时间:2019-10-22 06:24:35 所属栏目:优化 来源:Golang全栈
导读:【大咖·来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》 JWT 全 chen JSON Web Tokens 现在被广泛的应用于各种前后端分离的场景,他比传统的 Token Session 方式,更具灵活性。 当然网上也有很多开源的 JWT 库,非常之多,开源组织也提供了官方

下面我们就去实现一个最简单的 RS256 算法,新建一个 bs.go 文件,内容如下:

  1. package jwt 
  2.  
  3. import ( 
  4.     "crypto/sha256" 
  5.     "encoding/base64" 
  6.     "fmt" 
  7.  
  8. func NewRS256() IJwt { 
  9.  
  10.     jwtM := Jwt{} 
  11.  
  12.     //Sha256 
  13.     jwtM.SetSignFunc(func(bytes []byte) string { 
  14.         h := sha256.New() 
  15.         h.Write(bytes) 
  16.         return fmt.Sprintf("%x",h.Sum(nil)) 
  17.     }) 
  18.  
  19.     //base64 
  20.     jwtM.SetEncodeFunc(func(bytes []byte) string { 
  21.         return base64.URLEncoding.EncodeToString(bytes) 
  22.     }) 
  23.  
  24.     return &jwtM 

我这里 header 和 payload 采用 base64 去加密,签名采用 sha256 当然这种算法生成的 JWT 很容易被人串改模仿,不能用于生产的。

到这里我们的分享也就结束了,赶快去实现你的 JWT 算法吧,有任何疑问欢迎留言。

(编辑:济宁站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读