JWT身份验证策略

时间:2019-02-22 07:18:28

标签: go jwt

现在我是否应该在会话中存储JWT令牌感到困惑

我应该

  1. 在创建令牌后将其存储在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
  1. 在后续请求中传递令牌,以便在每个需要令牌的路由中

    func login(c *gin.Context) {
        c.Getheader("Authorization")
    }
    

我正在使用gin框架

哪种方法是更好的会话或来自用户的后续请求

关于, 诺法尔

2 个答案:

答案 0 :(得分:3)

如果您创建客户端-是,则在获得令牌后,应该存储它并传递后续请求。

如果您创建服务器,则为否。您无需存储已发行的令牌,但应在收到客户请求时随时对其进行验证。这样,您就可以使服务成为无状态且更具可扩展性。

答案 1 :(得分:1)

  

不要在会话中存储JWT。

使用JWT的一个重要好处是使服务器保持无状态。现在,如果将JWT放在会话中,您将失去JWT的优势。

示例:

说,您有两个服务器负载均衡的实例。除非您创建某种类型的共享会话存储,否则访问者每次都必须被迫访问同一台服务器(这并不容易)。