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 mainimport "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 mainimport (    "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}

登录后复制在 import 中多导入了一个 net/http 包, 用于格式化 http 响应的状态码。在授权访问的组中添加了部分用户。authorized.GET 只允许用户输入正确的组合。 它就像普通的路由器功能一样,但它需要身份验证

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

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

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

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 ,因为它有几个很好的例子!

推荐教程:《Go教程》

以上就是Gin 中实现 HTTP Basic Auth的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2635480.html

(0)
上一篇 2025年3月7日 04:49:53
下一篇 2025年2月28日 12:35:56

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 代码详解使用Go基于WebSocket构建视频直播弹幕系统

    (1)业务复杂度介绍 开门见山,假设一个直播间同时500W人在线,那么1秒钟1000条弹幕,那么弹幕系统的推送频率就是: 500W * 1000条/秒=50亿条/秒 ,想想B站2019跨年晚会那次弹幕系统得是多么的NB,况且一个大型网站不可…

    2025年3月7日
    200
  • go和c语言是一个作者吗

    是。Go语言的作者有三个:罗伯特·格利茨默(Robert Griesemer)、罗伯·派克(Rob Pike)和肯·汤普森(Ken Thompson);其中肯·汤普森也是C语言的作者。肯·汤普森是贝尔实验室Unix团队成员,C语言、Unix…

    2025年3月7日
    200
  • golang 怎么做热更新

    Golang标准库的http部分提供了强大的web应用支持,再加上negroni等中间件框架的支持,可以开发高性能的web应用(如提供Restful的api服务等)。                                     …

    2025年3月7日
    200
  • Golang 哪个 Web 框架好用?

    Golang 哪个 Web 框架好用? 1、Gin,是一个为速度而生的框架,相比较其它框架,它的速度是最快的; Gin框架对于开发api接口非常适合,它提供了丰富的渲染机制,同时也可以作为web后端处理应用。同时它也是支持扩展的,已经有很多…

    2025年3月7日 编程技术
    200
  • golang看什么书

    golang可看的书:《Go语言圣经》、《Go in Action》、《Introducing Go》、《Go语言编程》、《Go Recipes》、《Go Web编程》、《Go并发编程实战》、《Go语言程序设计》等等。 本教程操作环境:wi…

    2025年3月7日 编程技术
    200
  • golang中什么是微服务

    在golang中,微服务(或微服务架构)是一种软件架构风格(技术),它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于H…

    2025年3月7日
    200
  • golang的微服务是什么

    golang中的微服务是一种软件架构风格,面向服务的体系结构架构样式的一种变体,提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通,每…

    2025年3月7日
    200
  • 通过构建最小Web API来展示Go-Spring的强大

    本文由go语言教程栏目给大家介绍如何使用 go-spring 构建最小 web api ,希望对需要的朋友有所帮助!                                                              …

    编程技术 2025年3月7日
    100
  • dubbo支持go语言吗

    dubbo支持go语言。Dubbo已不在局限在Java语言范围内,开始支持Node.js、go语言等;Dubbo的Go语言版本就是Dubbo-go,是一款高性能Go语言微服务RPC框架,旨在为开发者提供便利的微服务应用开发体验。Dubbo-…

    2025年3月7日 编程技术
    200
  • golang是做什么的

    golang是非常年轻的一门语言,主要目标是兼具Python等动态语言的开发速度和C/C++ 等编译型语言的性能与安全性。Go语言作为服务器编程语言,很适合处理日志、数据打包、虚拟机处理、文件系统、分布式系统、数据库代理等,Go语言广泛应用…

    2025年3月7日
    200

发表回复

登录后才能评论