在 Angular / Golang 项目中使用 JWT
Posted
技术标签:
【中文标题】在 Angular / Golang 项目中使用 JWT【英文标题】:Using JWT in a Angular / Golang project 【发布时间】:2016-08-25 21:18:23 【问题描述】:我在弄清楚如何为我的项目正确使用 JWT 时遇到问题。
情况是这样的:
我有一个网站,人们可以通过 twitch 登录,它会根据我的要求给我一个 oauth 令牌、他们的用户名和更多内容。 (这就是身份验证过程的样子https://github.com/justintv/Twitch-API/blob/master/authentication.md)
在我的数据库中,我有一些具有访问级别的用户名。例如,级别 500 意味着他们可以在我的网站上看到管理仪表板,或者他们可以从 Angular 发送 POST 请求以更改数据。
我的 Angular 应用程序显然无法访问数据库。我只想通过我的 go 网络服务器提供的 API 进行通信。
我想知道的是如何确保尝试发送安全 POST 或 GET 的用户实际上是他所说的用户并且有权执行他正在执行的命令。
【问题讨论】:
【参考方案1】:JWT 由 3 部分组成:标头(用于“元数据”,如使用的加密算法等)、声明(存储在令牌中的实际数据)和 HMAC(用于验证上面两部分没有被篡改)。
在您的情况下,当您用户登录时,您应该收到 oauth 令牌、他们的用户名等。然后您可以使用用户名来获取关联的用户级别,并将所有内容存储在您自己的 JWT 声明中,您将发回给用户。在随后的请求中,您只需要检查令牌是否有效(不要忘记给他们一个简短的 ttl),然后您就可以确定发出请求的用户是它声称的用户它是(助记符双关语)。
【讨论】:
以上是关于在 Angular / Golang 项目中使用 JWT的主要内容,如果未能解决你的问题,请参考以下文章
我可以在一台服务器上托管 Angular2 前端和 Golang 后端吗