现在我是否应该在会话中存储JWT令牌感到困惑
我应该
在创建令牌后将其存储在Redis中
// JWT TOKEN
token := CreateToken(user)
// Storing it in Gorilla Session + Redis
s := sessions.Default(c)
s.Set("token", token)
s.Save()
然后从服务器获取令牌,而不是从请求标头的后续请求中获取令牌
s.Get("token")
// and to something with it
在后续请求中传递令牌,以便在每个需要令牌的路由中
func login(c *gin.Context) {
c.Getheader("Authorization")
}
我正在使用gin框架
哪种方法是更好的会话或来自用户的后续请求
关于, 诺法尔
答案 0 :(得分:3)
如果您创建客户端-是,则在获得令牌后,应该存储它并传递后续请求。
如果您创建服务器,则为否。您无需存储已发行的令牌,但应在收到客户请求时随时对其进行验证。这样,您就可以使服务成为无状态且更具可扩展性。
答案 1 :(得分:1)
不要在会话中存储JWT。
使用JWT的一个重要好处是使服务器保持无状态。现在,如果将JWT放在会话中,您将失去JWT的优势。
示例:
说,您有两个服务器负载均衡的实例。除非您创建某种类型的共享会话存储,否则访问者每次都必须被迫访问同一台服务器(这并不容易)。