https://segmentfault.com/a/1190000020329813 1.什么是JWT JWT(JSON Web Token)是一个非常轻巧的规范,这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息, 一个JWT由三部分组成,Header头部、Claims载荷、Signature签名, JWT原理类似我们加盖公章或手写签名的的过程,合同上写了很多条款,不是随便一张纸随便写啥都可以的,必须要一些证明,比如签名,比如盖章,JWT就是通过附加签名,保证传输过来的信息是真的,而不是伪造的, 它将用户信息加密到token里,服务器不保存任何用户信息,服务器通过使用保存的密钥验证token的正确性,只要正确即通过验证, 2.JWT构成 一个JWT由三部分组成,Header头部、Claims载荷、Signature签名, Header头部:头部,表明类型和加密算法 Claims载荷:声明,即载荷(承载的内容) Signature签名:签名,这一部分是将header和claims进行base64转码后,并用header中声明的加密算法加盐(secret)后构成,即: let tmpstr = base64(header)+base64(claims) let signature = encrypt(tmpstr,secret) //最后三者用".“连接,即: let token = base64(header)+”."+base64(claims)+"."+signature

繼續閱讀

1、Authenticator old:Authenticator: func(userId string, password string, c *gin.Context) New: ============================ `` type login struct { Username string `form:"username" json:"username" binding:"required"` Password string `form:"password" json:"password" binding:"required"` } Authenticator: func(c *gin.Context) (interface{}, error) { var loginVals login if err := c.ShouldBind(&loginVals); err != nil { return "", jwt.ErrMissingLoginValues } userID := loginVals.Username password := loginVals.Password `` 2、authMiddleware old: authMiddleware := jwt.GinJWTMiddleware{ New: authMiddleware, err := jwt.New(&jwt.GinJWTMiddleware{

繼續閱讀

gin-jwt

1. Authenticator 回傳的 data 2. data 會丟入到 PayloadFunc 3. PayloadFunc 整理資料寫入 MapClaims 4. Authorizator 再拿 MapClaims 資料出來判斷 新版和舊版有地方不同 type xxxxx struct{  aaaaaaa:string } 1、 Authenticator: func(userId string, password string, c *gin.Context) (interface{}, bool) { return xxxxx{aaaaaaa: ooooxxxx} or string 2、 PayloadFunc: func(data interface{}) jwt.MapClaims { if v, ok := data.(xxxxx); ok { id = data.(xxxxx).aaaaaaa } return jwt.MapClaims{“aaaaaaa”: ooooxxxx, “bbbbbbb”: ooooxxxx} 3、 Authorizator: func(data interface{}, c *gin.Context) bool {

繼續閱讀

作者的圖片

Sue boy

Sueboy Can support You

CIO

Taiwan