BasicAuth HTTP 基本认证

未匹配的标注

Basic Auth

基本认证中间件为 Fiber 提供了一个HTTP基本认证。它对有效的证书调用下一个处理程序,对缺少或无效的证书调用 401 Unauthorized 或自定义响应。

目录

签名

func New(config Config) fiber.Handler

示例

导入作为 Fiber 网络框架一部分的中间件包

import (
  "github.com/gofiber/fiber/v2"
  "github.com/gofiber/fiber/v2/middleware/basicauth"
)

在你启动你的 Fiber 应用程序后,你可以使用以下可能性。

// 提供一个最小的配置
app.Use(basicauth.New(basicauth.Config{
    Users: map[string]string{
        "john":  "Doe",
        "admin": "123456",
    },
}))

// 或者扩展你的配置以实现定制化
app.Use(basicauth.New(basicauth.Config{
    Users: map[string]string{
        "john":  "doe",
        "admin": "123456",
    },
    Realm: "Forbidden",
    Authorizer: func(user, pass string) bool {
        if user == "john" && pass == "doe" {
            return true
        }
        if user == "admin" && pass == "123456" {
            return true
        }
        return false
    },
    Unauthorized: func(c *fiber.Ctx) error {
        return c.SendFile("./unauthorized.html")
    },
    ContextUsername: "_user",
    ContextPassword: "_pass",
}))

配置

// Config定义了中间件的配置。
type Config struct {
    // 下一步定义了一个函数,当返回true时跳过这个中间件。
    //
    // 可选。默认值:nil
    Next func(c *fiber.Ctx) bool

    // Users定义了允许的凭证
    //
    // 必须的。默认:map[string]string{}。
    Users map[string]string

    // Realm 是一个字符串,用于定义 BasicAuth 的 realm 属性。
    // Realm是一个字符串,用于定义BasicAuth的realm属性,realm标识了要进行认证的系统。
    // 并且可以被客户用来保存凭证。
    //
    // 可选的。默认值:"限制"。
    Realm string

    // 授权者定义了一个函数,你可以通过这个函数
    // 来检查你想要的凭证。
    // 它将以用户名和密码被调用。
    // 并期望返回真或假以表明
    // 表明证书被批准或未被批准。
    //
    // 可选的。默认值:nil。
    Authorizer func(string, string) bool

    // Unauthorized定义了未授权响应的响应体。
    // 默认情况下,它将以401未授权和正确的WWW-Auth头返回。
    //
    // 可选。默认:nil
    Unauthorized fiber.Handler

    // ContextUser是在Locals中存储用户名的键。
    //
    // 可选。默认值:"用户名"
    ContextUsername string

    // ContextPass是存储在本地的密码的键值。
    //
    // 可选。默认为:"password"
    ContextPassword string
}

默认配置

var ConfigDefault = Config{
    Next:            nil,
    Users:           map[string]string{},
    Realm:           "Restricted",
    Authorizer:      nil,
    Unauthorized:    nil,
    ContextUsername: "username",
    ContextPassword: "password",
}

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/gofiber/2.x/bas...

译文地址:https://learnku.com/docs/gofiber/2.x/bas...

上一篇 下一篇
贡献者:2
讨论数量: 0
发起讨论 只看当前版本


暂无话题~