0

0

Gin 中实现 HTTP Basic Auth

Guanhui

Guanhui

发布时间:2020-06-15 18:04:46

|

3845人浏览过

|

来源于learnku

转载

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 的路由,当然我们也可以设置一个默认的路由 /

dmSOBC SHOP网店系统
dmSOBC SHOP网店系统

dmSOBC SHOP网店系统由北京时代胜腾信息技术有限公司(http://www.webzhan.com)历时6个月开发完成,本着简单实用的理念,商城在功能上摒弃了外在装饰的一些辅助功能,尽可能的精简各项模块开发,做到有用的才开发,网店V1.0.0版本开发完成后得到了很多用户的使用并获得了好评,公司立即对网店进行升级,其中包括修正客户提出的一些意见和建议,现对广大用户提供免费试用版本,如您在使用

下载

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

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

推荐教程:《Go教程

相关专题

更多
node.js调试
node.js调试

node.js调试可以使用console.log()输出调试信息、断点调试和第三方调试工具。详细介绍:1、console.log()输出调试信息,通过在代码中插入console.log()语句,开发人员可以在控制台输出变量的值、函数的执行结果等信息,以便观察代码的执行流程和状态;2、断点调试,可以在代码中设置断点,以便在特定位置暂停代码的执行,观察变量的值和执行流程等。

347

2023.09.19

JavaScript 全栈开发基础(Node.js + 前端)
JavaScript 全栈开发基础(Node.js + 前端)

本专题系统介绍 JavaScript 在全栈开发中的核心知识结构,涵盖 Node.js 基础、Express/Koa 接口构建、前端交互设计、模块化与包管理、数据库连接、前后端数据通信与部署流程。通过完整项目示例,帮助学习者掌握从浏览器到服务器的一体化开发能力,实现真正意义上的全栈入门。

93

2025.11.26

什么是中间件
什么是中间件

中间件是一种软件组件,充当不兼容组件之间的桥梁,提供额外服务,例如集成异构系统、提供常用服务、提高应用程序性能,以及简化应用程序开发。想了解更多中间件的相关内容,可以阅读本专题下面的文章。

178

2024.05.11

Golang 中间件开发与微服务架构
Golang 中间件开发与微服务架构

本专题系统讲解 Golang 在微服务架构中的中间件开发,包括日志处理、限流与熔断、认证与授权、服务监控、API 网关设计等常见中间件功能的实现。通过实战项目,帮助开发者理解如何使用 Go 编写高效、可扩展的中间件组件,并在微服务环境中进行灵活部署与管理。

212

2025.12.18

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

411

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

533

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

309

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

74

2025.09.10

Golang gRPC 服务开发与Protobuf实战
Golang gRPC 服务开发与Protobuf实战

本专题系统讲解 Golang 在 gRPC 服务开发中的完整实践,涵盖 Protobuf 定义与代码生成、gRPC 服务端与客户端实现、流式 RPC(Unary/Server/Client/Bidirectional)、错误处理、拦截器、中间件以及与 HTTP/REST 的对接方案。通过实际案例,帮助学习者掌握 使用 Go 构建高性能、强类型、可扩展的 RPC 服务体系,适用于微服务与内部系统通信场景。

8

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Go 教程
Go 教程

共32课时 | 3.7万人学习

Go语言实战之 GraphQL
Go语言实战之 GraphQL

共10课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号