github.com/iris-contrib/middleware/jwt应用成功,可以正常签发token和验证token;但可以反复重复的登录签发新的token,在过期时间内所有的token都可以正常通过验证,不符合项目的需求;
- 项目需求:第二次登录后,前一次的token将无法失效;
- 功能实现:
1. 用户登录签发token是,将token和user_id保存到redis,注:覆盖保存,一个user_id只有一个token;
2. 每次访问验证jwt时候,先去redis里面对比存储的token,与携带的token是否一致;如果一致则继续,如果不一致提示登录过期,您的账号在其他地方已登录;
- 问题:
如何在CheckJWT之前加入对比redis里面的token的代码?go里面没有重载,我想自己实现(middleware.JwtHandler().Serve)的方法,但是对golang理解不够,无从下手,求高手指点;
```go
// middleware/jwt.go
package middleware
import (
"github.com/iris-contrib/middleware/jwt"
)
const JwtSignString = "liLHidCSos2osjOb"
/**
* 验证 jwt
* @method JwtHandler
*/
func JwtHandler() *jwt.Middleware {
var mySecret = []byte("liLHidCSos2osjOb")
return jwt.New(jwt.Config{
ValidationKeyGetter: func(token *jwt.Token) (interface{}, error) {
return mySecret, nil
},
SigningMethod: jwt.SigningMethodHS256,
})
}
// router.go
...
usersParty.Use(middleware.JwtHandler().Serve, casbinMiddleware.ServeHTTP)
...
```