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的有效性
  • 相关阅读:
    Expression多条件筛选
    Express对条件的手动拼接
    查看绝对路径
    检查Linux内核版本信息
    New 路程 2019
    Braintree PayPal 支付网关开发(二)
    Braintree PayPal 支付网关开发(一)
    Quartz 作业调度框架的使用
    C# 扩展方法
    ASP.Net MVC管道分析
  • 原文地址:https://www.cnblogs.com/simple123/p/12933992.html
Copyright © 2011-2022 走看看