<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # jwt ## jwt-go ```go package jwtgo import ( "fmt" "github.com/dgrijalva/jwt-go" "time" ) const ( // secretKey 加密key secretKey = "Q6jhLn8vsD04WmAR" ) // expTime token有效時間 var expTime = time.Now().Add(time.Hour * 2).Unix() // JwtClaims 自定義 Claims 結構體 type JwtClaims struct { // 按需求自定義下方參數 Id string Name string Role string jwt.StandardClaims } // GenerateToken // 利用JwtClaims生成token字符串 // 加密方式; SHA256 func GenerateToken(id, name, role string) (tokenStr string, err error) { jwtClaims := &JwtClaims{ Id: id, //用戶id Name: name, Role: role, StandardClaims: jwt.StandardClaims{ ExpiresAt: expTime, //Issuer: issuer, //發行人 }, } token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwtClaims) tokenStr, err = token.SignedString([]byte(secretKey)) return } //ParseToken 解析token func ParseToken(tokenString string) (*JwtClaims, error) { token, err := jwt.ParseWithClaims(tokenString, &JwtClaims{}, func(token *jwt.Token) (interface{}, error) { if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok { return nil, fmt.Errorf("unexpected signing method %v ", token.Header["alg"]) } return []byte(secretKey), nil }) if claims, ok := token.Claims.(*JwtClaims); ok && token.Valid { return claims, nil } else { return nil, err } } ``` ## 使用 ```go package main import ( "fmt" "gotoys/plugins/jwtgo" "log" ) func main() { // 生成token token, err := jwtgo.GenerateToken( "cc6a6e14-2f11-4b61-b077-1b0f7b9c7944", "xiao ming", "administrator") if err != nil { log.Printf("%v", err) } else { fmt.Printf("token:%s\n", token) } // 解析token jwtClaims, err := jwtgo.ParseToken(token) if err != nil { log.Printf("%v", err) } else { fmt.Printf("id:%s\nname:%s\nrole:%s\nexp:%d", jwtClaims.Id, jwtClaims.Name, jwtClaims.Role, jwtClaims.ExpiresAt) } } ``` 打印結果 ```bash token:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJJZCI6ImNjNmE2ZTE0LTJmMTEtNGI2MS1iMDc3LTFiMGY3YjljNzk0NCIsIk5hbWUiOiJ4aWFvIG1pbmciLCJSb2xlIjoiYWRtaW5pc3RyYXRvciIsImV4cCI6MTYwODk5Nzk5NH0.RuPNtNzoUQiaRb2qQYgfR2FBoi4rpox3kzMdO_WgUt0 id:cc6a6e14-2f11-4b61-b077-1b0f7b9c7944 name:xiao ming role:administrator exp:1608997994 ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看