golang 之 jwt-go
主要针对jwt-go快速生成token。和如何取进行介绍,具体详情还请查看
生成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的更多相关文章
- golang中jwt使用
golang 中jwt使用方式总结. 1. golang示例代码 import ( "fmt" "time" "github.com/dgrijalv ...
- Go实战--golang中使用JWT(JSON Web Token)
http://blog.csdn.net/wangshubo1989/article/details/74529333 之前写过关于golang中如何使用cookie的博客: 实战–go中使用cook ...
- golang学习笔记10 beego api 用jwt验证auth2 token 获取解码信息
golang学习笔记10 beego api 用jwt验证auth2 token 获取解码信息 Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放 ...
- 基于gin的golang web开发:认证利器jwt
JSON Web Token(JWT)是一种很流行的跨域认证解决方案,JWT基于JSON可以在进行验证的同时附带身份信息,对于前后端分离项目很有帮助. eyJhbGciOiJIUzI1NiIsInR5 ...
- golang简单实现jwt验证(beego、xorm、jwt)
程序目录结构 简单实现,用户登录后返回一个jwt的token,下次请求带上token请求用户信息接口并返回信息. app.conf文件内容(可以用个beego直接读取里面的内容)写的是一个jwt的se ...
- golang前后端jwt对接
0x0 什么是jwt JWT是JSON Web Token的缩写,可以用作授权认证.传统的授权认证一般采用session,由于session存储在服务端,加大了服务端的计算量, 而且多台服务器之间存在 ...
- golang jwt
什么是JWT? JWT全称JSON Web Token是一种跨域认证解决方案,属于一个开放的标准,它规定了一种Token实现方式,目前多用于前后端分离项目和OAuth2.0业务场景下. JWT作用? ...
- 【GoLang】go 微服务框架 && Web框架学习资料
参考资料: 通过beego快速创建一个Restful风格API项目及API文档自动化: http://www.cnblogs.com/huligong1234/p/4707282.html Go 语 ...
- golang web实战之二(iris)
之前写了一篇为:golang web实战之一(beego,mvc postgresql) 听说iris更好: 1. iris hello world package main import &quo ...
- golang 框架 之 CHI
1,特性 golang 的 http框架已经有很多,究其原因:go 的net/http 已经做了大部分工作,封装一个框架的工作量,没有那么的大. 不过呢,林子大了鸟也就多了,部分框架的代码质量实在不敢 ...
随机推荐
- P3386 【模板】二分图匹配(匈牙利算法)
题目背景 二分图 题目描述 给定一个二分图,结点个数分别为n,m,边数为e,求二分图最大匹配数 输入输出格式 输入格式: 第一行,n,m,e 第二至e+1行,每行两个正整数u,v,表示u,v有一条连边 ...
- JS中的浅拷贝与深拷贝
浅拷贝与深拷贝的区别: 浅拷贝: 对基本类型和引用类型只进行值的拷贝,即,拷贝引用对象的时候,只对引用对象的内存地址拷贝,新旧引用属性指向同一个对象,修改任意一个都会影响所有引用当前对象的变量. 深拷 ...
- ex1
#include <stdio.h> int main() { int x; printf("输入一个整数: \n"); scanf("%d",&a ...
- [Gamma阶段]第五次Scrum Meeting
Scrum Meeting博客目录 [Gamma阶段]第五次Scrum Meeting 基本信息 名称 时间 地点 时长 第五次Scrum Meeting 19/05/31 大运村寝室6楼 30min ...
- Scrum Meeting 博客汇总
Scrum Meeting 博客汇总 一.Scrum Meeting 1. Alpha 第一次 Scrum Meeting 第二次 Scrum Meeting 第三次 Scrum Meeting 第四 ...
- 浅析String.intern()方法
1.String类型“==”比较样例代码如下:package com.luna.test;public class StringTest { public static void main(Strin ...
- android studio 创建项目的一些配置
build.gradle文件 apply plugin: 'com.android.application' apply plugin: 'org.greenrobot.greendao' // 使用 ...
- java只允许输入数字字母下划线中文
public static void main(String[] args) { Pattern pattern = Pattern.compile("[_0-9a-z]+"); ...
- Java读取CSV数据并写入txt文件
读取CSV数据并写入txt文件 package com.vfsd; import java.io.BufferedWriter; import java.io.File; import java.io ...
- 生命游戏(python实现,pygame显示图形)
# 游戏规则:# 生命游戏(Game of Life),或者叫它的全称John Conway's Game of Life.是英国数学家约翰·康威在1970年代所发明的一种元胞自动机.# 1. 活细胞 ...