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的有效性
  • 相关阅读:
    接口的显式实现和隐式实现
    MVC
    委托
    测试用例(TestCase)
    The remote server returned an error: NotFound.
    事件
    WCF大数据量传输配置
    多态随笔
    领域模型(domain model)
    IQueryable接口和IEnumberable接口
  • 原文地址:https://www.cnblogs.com/simple123/p/12933992.html
Copyright © 2011-2022 走看看