使用golang作为API服务器,如何获取angular-4中使用JWT的用户的登录状态

使用golang作为API服务器,如何获取angular-4中使用JWT的用户的登录状态,angular,session,go,login,token,Angular,Session,Go,Login,Token,我是go语言或golang新手,我正在创建一个应用程序,使用Angular-4作为前端,go作为API服务器。我使用的数据库是mongodb 因此,我使用go中的gin创建了一个端点api 这些API运行良好,我已经创建了一个登录API,它可以获取电子邮件和密码,如果电子邮件和密码正确,它将创建一个JWT令牌并返回JWT令牌作为响应 JWT令牌由以下内容组成: 用户ID 用户角色 当前服务器时间 如果用户的电子邮件和密码正确,服务器将创建一个JWT令牌并将其保存在用户集合中,然后将其返回客户

我是go语言或golang新手,我正在创建一个应用程序,使用Angular-4作为前端,go作为API服务器。我使用的数据库是mongodb

因此,我使用go中的
gin
创建了一个端点api

这些API运行良好,我已经创建了一个登录API,它可以获取电子邮件和密码,如果电子邮件和密码正确,它将创建一个JWT令牌并返回JWT令牌作为响应

JWT令牌由以下内容组成:

  • 用户ID
  • 用户角色
  • 当前服务器时间
如果用户的电子邮件和密码正确,服务器将创建一个JWT令牌并将其保存在用户集合中,然后将其返回客户端并保存到本地存储

我想像在PHP或Java应用程序中一样将令牌保存到服务器。 有人建议我将JWT令牌存储在服务器本地存储或内存中,而不是保存到用户的cookie中

我使用的是
gin
package而不是
http
package。因此,请帮助我参考
gin
软件包


我搜索了太多的会话,但是我找到了与http相关的方法,我也读过关于gorilla会话的内容,但是我得到的是客户端的,我想把令牌保存在服务器端。

服务器端没有本地存储,就像Web一样。。。有用于这些目的的数据库。如果将Mongodb用作数据库,请改用它。。。 或者在服务器端使用全局变量。
但是我建议db。

这个问题有什么问题吗?请先阅读整个问题,然后投票否决。问题是不同的。为什么您需要JWT和会话?我已经使用vue.js创建了一个单页应用程序,使用go as API服务器,IMHO,您不需要两者,您可以使用JWT或session。我正在把JWT令牌保存在cookie上。是的,你说得对。我已将JWT保存在本地存储中。但是我如何检测用户是否登录?所以,这就是为什么我必须使用会话或一些可以用来在服务器上存储令牌的东西,以便我可以检查用户状态。也许这也是我在应用程序中想要的一件好事。我不确定这一点,但是javascript中的某种刷新功能(比如说每10-20分钟运行一次)怎么样?但我认为这对你的服务器来说是非常沉重的。你仍然会使用你的JWT令牌。老实说,我不是很确定,据我所知,JWT应该是无状态的,所以我想说,试着实现你认为在你的情况下有效的东西。无论如何,试着阅读,它可能会帮助你决定你的应用程序真正想要什么。干杯,伙计!你完全正确@Muhammad Kashif Sulaiman。但我已经在DB中保存了令牌,若我从DB中逐个令牌地找到并检查用户,那个将是一个漫长的过程。你能告诉我一个简单的方法吗?如果你不想使用db,那么就使用全局变量。例如,tokensList=[{:},{:}]