主要针对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. 牛客网 牛客练习赛4 A.Laptop-二维偏序+离散化+树状数组

    A.Laptop 链接:https://ac.nowcoder.com/acm/contest/16/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其 ...

  2. nginx之动静分离(nginx与php不在同一台服务器)

    nginx实现动静分离(nginx与php不在同一个服务器) 使用wordpress-5.0.3-zh_CN.tar.gz做实验 Nginx服务器的配置: [root@app ~]# tar xf w ...

  3. 第09组 Alpha冲刺(3/6)

    队名:观光队 组长博客 作业博客 组员实践情况 王耀鑫 过去两天完成了哪些任务 文字/口头描述 完成服务器连接数据库部分代码 展示GitHub当日代码/文档签入记录 接下来的计划 服务器网络请求,vu ...

  4. 淘宝接口-IP返回运营商

    #!/usr/bin/evn python# -*- coding:utf-8 -*-import jsonimport urllib2import datetimeimport reimport Q ...

  5. 使用List中remove方法时需要注意的问题

    String str1 = new String("1"); String str2 = new String("2"); String str3 = new ...

  6. 使用iis部署asp.net core 中的坑

    使用vs2017创建asp.net core mvc 模板网站然后部署到iis上,如果在一直有并发访问的情况下,操作iis重新绑定域名操作,网站会直接挂掉,重启应用池也没用,而且部署到iis上容易出现 ...

  7. INDY10 BASE64编码

    INDY10 BASE64编码 DELPHI自带的BASE64单元,在项目中使用发现非常没有效率,INDY10的好用. uses IdCoderMIME BASE64编码类:TIdEncoderMIM ...

  8. ubuntu下Vim安装失败

    sudo apt-get install vim Reading package lists... Done Building dependency tree Reading state inform ...

  9. Linux 设置代理

    一.为系统设置代理编辑文件/etc/profile,增加如下两行 export http_proxy=http://proxy.com:8080/export https_proxy=http://p ...

  10. JPA的查询方法总结

    一.使用where条件上一篇我们使用JPA进行了数据源的访问,默认JPA已经实现了好几个接口可以调用.但是,在实际的业务中,查询语句不可避免地需要使用where.order by等语句. 我们用商品数 ...