主要针对jwt-go快速生成token。和如何取进行介绍,具体详情还请查看

github.com/dgrijalva/jwt-go

生成token

package main

import (
"flag"
"fmt"
"github.com/dgrijalva/jwt-go"
"github.com/micro/go-micro/config"
"time"
) type Config struct {
Version string
Hello struct {
Name string
}
Etcd struct {
Addrs []string
UserName string
Password string
}
} type User struct {
Name string `json:"name"`
Password string `json:"password"`
Token struct {
AccessToken string `json:"accessToken"`
ExpiresAt int64 `json:"expiresAt"`
Timestamp int64 `json:"timestamp"`
}
} func main() { // 主要解析config.json配置文件,生成token没有用到
configFile := flag.String("f", "/go-gin-micro/config/config.json", "please use config.json")
conf := new(Config)
if err := config.LoadFile(*configFile); err != nil {
return
}
if err := config.Scan(conf); err != nil {
return
}
fmt.Println(conf)
//md := map[string]string{
// "vector": "yang",
//}
user := &User{} claims := &jwt.StandardClaims{
ExpiresAt:time.Now().Add(30*time.Second).Unix(), // 过期时间,必须设置
Issuer:"wang", // 可不必设置,也可以填充用户名,
}
expired := time.Now().Add(148 * time.Hour).Unix()
token := jwt.NewWithClaims(jwt.SigningMethodHS256,claims) //生成token
accessToken, err := token.SignedString([]byte("vector.sign"))
if err != nil {
return
}
user.Token.ExpiresAt = expired
user.Token.AccessToken = accessToken
user.Token.Timestamp = time.Now().Unix() }

 解析token

package main

import (
"flag"
"fmt"
"github.com/dgrijalva/jwt-go"
"time"
) func InitC(token string) {
authorization := toekn
token,err := jwt.Parse(authorization, func(token *jwt.Token) (i interface{}, e error) {
return []byte("vector.sign"),nil
})
if err != nil {
// 第一种
//if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
// fmt.Println("+++")
// return
//}
//fmt.Println([]byte("vector.sign")) // 第二种
if err ,ok := err.(*jwt.ValidationError);ok {
if err.Errors & jwt.ValidationErrorMalformed != 0 {
return
}
if err.Errors & (jwt.ValidationErrorExpired | jwt.ValidationErrorNotValidYet) != 0 {
fmt.Println(err)
return
}
}
return
}
finToken := token.Claims.(jwt.MapClaims) // 获取token里面的字段,如生成填入的username
fmt.Println(finToken["iss"])
}

  

golang 之 jwt-go的更多相关文章

  1. golang中jwt使用

    golang 中jwt使用方式总结. 1. golang示例代码 import ( "fmt" "time" "github.com/dgrijalv ...

  2. Go实战--golang中使用JWT(JSON Web Token)

    http://blog.csdn.net/wangshubo1989/article/details/74529333 之前写过关于golang中如何使用cookie的博客: 实战–go中使用cook ...

  3. golang学习笔记10 beego api 用jwt验证auth2 token 获取解码信息

    golang学习笔记10 beego api 用jwt验证auth2 token 获取解码信息 Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放 ...

  4. 基于gin的golang web开发:认证利器jwt

    JSON Web Token(JWT)是一种很流行的跨域认证解决方案,JWT基于JSON可以在进行验证的同时附带身份信息,对于前后端分离项目很有帮助. eyJhbGciOiJIUzI1NiIsInR5 ...

  5. golang简单实现jwt验证(beego、xorm、jwt)

    程序目录结构 简单实现,用户登录后返回一个jwt的token,下次请求带上token请求用户信息接口并返回信息. app.conf文件内容(可以用个beego直接读取里面的内容)写的是一个jwt的se ...

  6. golang前后端jwt对接

    0x0 什么是jwt JWT是JSON Web Token的缩写,可以用作授权认证.传统的授权认证一般采用session,由于session存储在服务端,加大了服务端的计算量, 而且多台服务器之间存在 ...

  7. golang jwt

    什么是JWT? JWT全称JSON Web Token是一种跨域认证解决方案,属于一个开放的标准,它规定了一种Token实现方式,目前多用于前后端分离项目和OAuth2.0业务场景下. JWT作用? ...

  8. 【GoLang】go 微服务框架 && Web框架学习资料

    参考资料: 通过beego快速创建一个Restful风格API项目及API文档自动化:  http://www.cnblogs.com/huligong1234/p/4707282.html Go 语 ...

  9. golang web实战之二(iris)

    之前写了一篇为:golang web实战之一(beego,mvc postgresql) 听说iris更好: 1.  iris hello world package main import &quo ...

  10. golang 框架 之 CHI

    1,特性 golang 的 http框架已经有很多,究其原因:go 的net/http 已经做了大部分工作,封装一个框架的工作量,没有那么的大. 不过呢,林子大了鸟也就多了,部分框架的代码质量实在不敢 ...

随机推荐

  1. nginx 日志之 access_log格式

    Nginx访问日志可以设置自定义的格式,来满足特定的需求. 示例: 示例1 log_format combined_realip '$remote_addr $http_x_forwarded_for ...

  2. 轮播模仿臭美APP,vue,swiper

    介绍:轮播使用了swiper,重要用于移动端滑动,详情可查看官网 1.首先用npm安装        npm install swiper 2.main.js 中引入CSS     import 's ...

  3. 【AtCoder】 ARC 099

    link C-Minimization 枚举覆盖\(1\)的区间,两边的次数直接算 #include<bits/stdc++.h> #define ll long long #define ...

  4. 文件系统EXT3,EXT4和XFS的区别

    1. EXT3 (1)最多只能支持32TB的文件系统和2TB的文件,实际只能容纳2TB的文件系统和16GB的文件 (2)Ext3目前只支持32000个子目录 (3)Ext3文件系统使用32位空间记录块 ...

  5. Mongoose 多表(N个表)关联查询aggregate

    Mongoose 多表(N个表)关联查询概述 需求:文章(article),文章分类(articlecate),用户(user)这三个表之间的关系,一篇文章对应文章分类表中的某个类型,对应着用户表中的 ...

  6. .NET Core 代码安装服务启动

    最近做了一些.NET Core的程序,有在Windows下运行的 有在CentOS 下运行的,Windows下运行的还好,对Windows下还算比较熟悉了,但CentOS 下 每次都是找笔记支持命令 ...

  7. Awesome Knowledge-Distillation

    Awesome Knowledge-Distillation 2019-11-26 19:02:16 Source: https://github.com/FLHonker/Awesome-Knowl ...

  8. p7zip p7zip -d 7z

  9. linux下检查网络连通情况

    MTR是一种简单的跨平台命令行网络诊断工具,它将常用的traceroute和ping程序的功能组合到一个工具中. 与traceroute类似, mtr输出关于数据包从运行mtr的主机到用户指定的目标主 ...

  10. CobaltStrike3.14破解

    原文发布在:https://bithack.io/forum/310 8月6日已更新 之前发的是5月2号破解的,并且官方作者的exit暗桩没有去掉.看到很多人用此版本遇到问题,抽空修复了下bug.此版 ...