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 已经做了大部分工作,封装一个框架的工作量,没有那么的大. 不过呢,林子大了鸟也就多了,部分框架的代码质量实在不敢 ...
随机推荐
- 中国大学生计算机系统与程序设计竞赛 CCF-CCSP-2017 串行调度(serial)
串行调度(serial) 除等价条件, 根据题意设置限制条件,然后求字典序最小拓扑序. 简洁版 #include<bits/stdc++.h> using namespace std; ; ...
- SpringMVC效验器
效验器: 1. 效验器依赖 <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator --> &l ...
- 第09组 Alpha冲刺(3/6)
队名:观光队 组长博客 作业博客 组员实践情况 王耀鑫 过去两天完成了哪些任务 文字/口头描述 完成服务器连接数据库部分代码 展示GitHub当日代码/文档签入记录 接下来的计划 服务器网络请求,vu ...
- MVVC与乐观锁和悲观锁
在并发读写数据库时,读操作可能会不一致的数据(脏读).为了避免这种情况,需要实现数据库的并发访问控制,最简单的方式就是加锁访问.由于,加锁会将读写操作串行化,所以不会出现不一致的状态.但是,读操作会被 ...
- NULL与nullptr
[https://blog.csdn.net/weixin_40237626/article/details/82560012] 其实啊,在编译器进行解释程序时,NULL会被直接解释成0,所以这里的参 ...
- JAVA字符编码一:Unicode,GBK,GB2312,UTF-8概念基础
第一篇:JAVA字符编码系列一:Unicode,GBK,GB2312,UTF-8概念基础 来源:holen'blog 对字符编码与Unicode,ISO 10646,UCS,UTF8,UTF16, ...
- 用SAS提交SAS代码
OPTIONS NOXWAIT;%LET PATH=%STR(C:\Program Files\SAS\SAS 9.1);%LET CODEPATH=%STR(D:\001.RIPP.MODEL);% ...
- 使用Signature Tool自动生成P/Invoke调用Windows API的C#函数声明【转】
原文链接:https://blog.csdn.net/Donjuan/article/details/3865026在网上看到很多网友在.NET程序中调用Win32 API,或者调用自己的VC DLL ...
- 如何在nginx下实现访问web网站密码认证保护的功能
在某些特定的环境下,我们希望nginx下的web站点在访问时需要用户输入账户密码才能访问.以便拒绝那些不速之客. 其实,配置起来也很简单,按照下面的步骤即可实现. 一.编辑虚拟主机配置文件. serv ...
- some try on func swap about & and *
import "fmt" func swap(x,y *int ) { //x ,y = y,x //fault /* t := *x *x = *y *y = t */ //tr ...