带有JWT认证和MongoDB的Todo应用程序API

74 阅读2分钟

使用JWT认证和MongoDB的Todo应用API

这是一个用GoLang编写的简单而强大的应用程序,展示了JWT认证和MongoDB的用途。每个用户和任务都被存储在MongoDB集合中。每个会话都由JWT认证来保证和管理。密码被散列并以行业标准的方式存储在MongoDB中。该应用程序部署在Heroku上,可以通过以下链接访问。

go-jwt-todo-mongo.herokuapp.com/

什么是JWT认证?

Todo app API with JWT Authentication and MongoDB

JSON网络令牌(JWT)是一个开放的标准(RFC 7519),它定义了一种紧凑和独立的方式,以JSON对象的形式在各方之间安全地传输信息。这种信息可以被验证和信任,因为它是经过数字签名的。JWTs可以使用秘密(使用HMAC算法)或使用RSA或ECDSA的公共/私人密钥对进行签名。

尽管JWTs可以被加密,以便在各方之间提供保密性,但我们将专注于签名的令牌。签名的令牌可以验证其中包含的索赔的完整性,而加密的令牌则对其他各方隐藏这些索赔。当令牌使用公钥/私钥对签名时,签名也证明了只有持有私钥的一方才是签名者。

什么时候使用?

  • 授权:这是使用JWT最常见的情况。一旦用户登录,随后的每个请求将包括JWT,允许用户访问该令牌允许的路线、服务和资源。单点登录是目前广泛使用JWT的一个功能,因为它的开销小,而且能够方便地在不同的域中使用。

  • 信息交换:JSON网络令牌是一种在各方之间安全传输信息的好方法。因为JWTs可以被签署--例如,使用公共/私人密钥对--你可以确保发送者是他们所说的人。此外,由于签名是使用头和有效载荷计算的,你也可以验证内容没有被篡改。

项目概述

每个用户都必须注册并创建一个自己的账户,或登录到现有的账户,然后才能访问该应用程序。 每个用户的密码都经过散列,并以行业标准的方式存储在MongoDB中。Todo app API with JWT Authentication and MongoDB

你可以在该应用程序中执行若干操作:

  • 创建一个任务
  • 删除一个任务
  • 更新一个任务
  • 完成一项任务(检查)
  • 删除所有任务

安装

克隆资源库到你选择的目录中 运行命令go mod tidy ,下载必要的软件包。你需要添加一个.env文件,并添加一个MongoDB连接字符串,名称为MONGODB_URL ,以访问你的任务和用户存储集合。你还需要在.env文件中添加SECRET_KEY ,以进行JWT验证。

运行命令go run main.go ,项目应该运行在locahost:8080