主要验证,是否有token,token是否有效,其中对login登录路由进行排除
- con.Abort() 终止请求,直接返回错误信息。需要再return前添加con.Abort()
func TokenMiddle() gin.HandlerFunc {
return func(con *gin.Context) {
path := con.Request.URL.Path
println(strings.Index(path, "login"))
if strings.Index(path, "login") < 0 {
token := con.Request.Header.Get("Authorization")
if token == "" {
con.JSON(
http.StatusOK,
gin.H{
"code": 405,
"msg": "无权访问",
},
)
con.Abort()
return
}
conn := dao.RedisPool.Get()
rep, _ := redis.String(conn.Do("Get", token))
conn.Close()
if rep == "" {
con.JSON(
http.StatusOK,
gin.H{
"code": 405,
"msg": "toke无效",
},
)
con.Abort()
return
}
} else {
con.Next()
}
}
}
func (c *Context) Abort() {
c.index = abortIndex
}
rou := gin.Default()
rou.Use(cors.TokenMiddle())