Maison> développement back-end> Golang> le corps du texte

Gin 中实现 HTTP Basic Auth

Guanhui
Libérer: 2020-06-15 18:04:46
avant
3450 Les gens l'ont consulté

Gin 中实现 HTTP  Basic Auth

我一直在研究 Go,具体的说应该是一直在研究 gin 。我的 pet 项目需要一个快速而粗糙的身份认证。

通常我不会建议使用 HTTP / basic auth 来保护资源,但对于这个项目,我没有数据库,我只是在这里和那里提供一些 markdown 文件。所以我这里会采用 HTTP / basic auth 来做身份认证。

gin 是我最喜欢的 web 框架之一,因为它有很多非常酷的中间件,它有点像 node.js 的express 框架 或 hapijs。

安装 Gin 框架 & 打印 Hello World

如果你在go/src目录下创建了一个gin-http-auth的项目,在项目的main.go文件里添加的的内容如下:

package main import "github.com/gin-gonic/gin" func main() { r := gin.Default() r.GET("/", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "Hello World!", }) }) r.Run() //监听 0.0.0.0:8080 }
Copier après la connexion

接着在你的终端上运行go get命令,你的项目就开始运行了! 您现在需要通过运行以下命令启动刚出炉的 JSON API:

go run main.go
Copier après la connexion

你可以在你的浏览器中输入 localhost:8080,应该可以看到 「message:Hello World !」

注意:提供 API 可能是 gin 的更大应用场景之一,但是你也可以直接渲染一系列模板。

用 Gin 框架来实现路由保护


假设你现在有一个 secret 的方法,你不希望所有人通过 url 访问的到,这是一个特殊的烧烤酱配方或一封含有一些不可告人的细节的的情书!

我们需要设置一些示例用户帐户并创建一个 secret 的路由,当然我们也可以设置一个默认的路由/

让我们来看看这个最小可行的例子:

package main import ( "net/http" "github.com/gin-gonic/gin" ) func main() { r := gin.Default() r.GET("/", func(c *gin.Context) { c.JSON(http.StatusOK, gin.H{ "message": "Hello World!", }) }) authorized := r.Group("/", gin.BasicAuth(gin.Accounts{ "user1": "love", "user2": "god", "user3": "sex", })) authorized.GET("/secret", func(c *gin.Context) { c.JSON(http.StatusOK, gin.H{ "secret": "The secret ingredient to the BBQ sauce is stiring it in an old whiskey barrel.", }) }) r.Run() // 监听服务在 0.0.0.0:8080 }
Copier après la connexion
  1. import中多导入了一个net/http包, 用于格式化 http 响应的状态码。
  2. 在授权访问的组中添加了部分用户。
  3. authorized.GET只允许用户输入正确的组合。 它就像普通的路由器功能一样,但它需要身份验证

当您更改文件内容时,请按「CTRL + C」以快速运行 Gin 框架的实例并重新启动它.

当你在你的浏览器中访问 localhost:8080/secret,你应该看到一个窗口提示你输入用户名和密码。

如果你正确输入的账户和密码,你将看到以下输出:

secret "The secret ingredient to the BBQ sauce is stiring it in an old whiskey barrel."
Copier après la connexion

就这样已经搞定了! 你在 Go web 项目中创造了一个需要 http basic auth 的路由!

如果你想要更详细的例子,请查看 Github 上 gin 的 README.md ,因为它有几个很好的例子!

推荐教程:《Go教程

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:learnku.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!