zoukankan      html  css  js  c++  java
  • golang jwt+token验证

     Token验证是验证用户身份的重要方式,在golang开发中具有广泛应用,文中主要阐述了利用jwt包加密后的token验证。

    导入包:

    import (
    "github.com/dgrijalva/jwt-go"
    )
    // GenerateToken 生成Token
    func GenerateToken(mapClaims jwt.MapClaims, key string) (string, error) {
    token := jwt.NewWithClaims(jwt.SigningMethodHS256, mapClaims)
    return token.SignedString([]byte(key))
    }
    //  验证token
    func checkToken(uid int64,token *jwt.Token) bool {
    tokens, _ := token.SignedString([]byte(JWTKey))
    redisToken, _ := GetMemberToken(uid)
    if tokens != redisToken {
    return false
    }
    return true
    }
    用户登录请求取出token
    token, err := request.ParseFromRequest(r, request.AuthorizationHeaderExtractor, func(token *jwt.Token) (interface{}, error) {
    return []byte(JWTKey), nil
    })
    if err == nil && token.Valid {
    tokenMap := token.Claims.(jwt.MapClaims)
    uidStr := tokenMap["uid"].(string)
    uid, _ := strconv.ParseInt(uidStr,10,64)

    if !checkToken(uid, token) {
    // 验证token 是否合法
    base.ErrorResponse(w, http.StatusUnauthorized, "Authorization Is Invalid")
    return
    }
    }

    token主要是生成,验证,以及用户请求时解析token得出用户uid和token的有效性
  • 相关阅读:
    LeetCode-434-字符串中的单词数
    LeetCode-415-字符串相加
    字符串
    序列
    元组
    列表
    repr()与str的区别
    输出函数print()
    输入函数input()
    MySQL中快速复制数据表方法汇总
  • 原文地址:https://www.cnblogs.com/simple123/p/12933992.html
Copyright © 2011-2022 走看看