您现在的位置是:群英 > 开发技术 > 编程语言
Gin里面如何实现 HTTP Basic Auth的呢?
Admin发表于 2022-06-28 17:05:00685 次浏览
这篇文章给大家分享的是“Gin里面如何实现 HTTP Basic Auth的呢?”,文中的讲解内容简单清晰,对大家认识和了解都有一定的帮助,对此感兴趣的朋友,接下来就跟随小编一起了解一下“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 
}

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

go run main.go

你可以在你的浏览器中输入 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
}
  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."

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

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



通过以上内容的阐述,相信大家对“Gin里面如何实现 HTTP Basic Auth的呢?”已经有了进一步的了解,更多相关的问题,欢迎关注群英网络或到群英官网咨询客服。

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

标签: go
相关信息推荐
2022-05-13 17:49:17 
摘要:本篇文章带大家聊聊Angular中的响应式表单,通过实例来介绍一下简单的表单实现方法,希望对大家有所帮助!
2022-06-16 17:03:20 
摘要:下面由Golang教程栏目给大家介绍Golang实现简单的API网关的方法 ,希望对需要的朋友有所帮助!在最近的一个项目中,采用了微服务架构-go-kit进行后端的开发。在微服务架构风格中,一个大应用被拆分成为了多个小的服务系统提供出来..
2022-06-16 09:27:25 
摘要:本篇文章给大家带来了关于PHP的相关知识,其中主要介绍了PHP中应该怎么解析JSON数据,JSON是一种标准的轻量级数据交换格式,它可以快速、容易地解析和生成,下面一起来看一下,希望对大家有帮助。
云活动
推荐内容
热门关键词
热门信息
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部