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 已经做了大部分工作,封装一个框架的工作量,没有那么的大. 不过呢,林子大了鸟也就多了,部分框架的代码质量实在不敢 ...
随机推荐
- poj2398 Toy Storage 计算几何,叉积,二分
poj2398 Toy Storage 链接 poj 题目大意 这道题的大概意思是先输入6个数字:n,m,x1,y1,x2,y2.n代表卡片的数量,卡片竖直(或倾斜)放置在盒内,可把盒子分为n+1块区 ...
- Harbor基础
harbor: Harbor是构建企业级私有docker镜像的仓库的开源解决方案,它是Docker Registry的更高级封装,它除了提供友好的Web UI界面,角色和用户权限管理,用户操作审计等功 ...
- linux 系统添加jdk环境变量
export JAVA_HOME=/usr/local/jdk1..0_79 export JAVA_BIN=$JAVA_HOME/bin export PATH=$PATH:$JAVA_BIN ex ...
- python 使用夜神模拟器
安装版本为6.2.8.0 1.模拟器安装证书 打开模拟器,点击浏览器 在浏览器里输入:mitm.it 出现如下: 选择安卓进行安装 比如:sks123 2.设置代理 输入密码:sks123 上面刚才设 ...
- Android ConstraintLayout 小记
* 可以圆形定位view之间的位置,通过View的中心,来定位不同半径和弧度的距离. layout_constraintCircle : references another widget id la ...
- PHPUnit 单元测试教程
一.官网下载对应 PHP 版本的代码库 https://phpunit.de/getting-started-with-phpunit.html 二.安装 PHPUnit 官网提供了两种方法安装 1. ...
- Android闪屏问题的分析思路
http://www.devba.com/index.php/archives/6157.html Android闪屏问题的分析思路 作者:孤风一剑 发布:2015-01-22 12:35 ...
- java concurrent并发包使用
package cn.com.zxf.atomic; import java.util.concurrent.atomic.AtomicInteger; public class AtomicExam ...
- rocketmqy压测消费端解决源码中不能正常消费的问题
因为近期在做rocketmq的性能压测,然后看到一些文章,提到用rocketmq中的自带的benchamark工具进行压测,因为我们公司是自己在做了一个二次封装,做了一层认证,所以工具还需要在改造,所 ...
- 自定义程序启动脚本加入到supervisord下管理
ubuntu14.04 系统,直接通过apt-get安装即可 apt-get install supervisord 官网:http://www.supervisord.org/ 主配置文件 这个配置 ...