登录
首页 >  Golang >  Go问答

使用 Echo 框架进行基本身份验证

来源:stackoverflow

时间:2024-03-16 18:06:27 434浏览 收藏

使用 Echo 框架进行基本身份验证时,需要将中间件应用到组上,而不是根实例。这样可以确保处理程序返回正确的 HTML,并避免歧义。本指南将提供一个工作代码链接,演示如何使用 Echo 框架进行基本身份验证,包括设置中间件和处理程序的正确方法。

问题内容

尝试使用 go 的 echo 框架来进行基本身份验证。已经找到了一些代码片段,但到目前为止还没有找到完整的代码集。

到目前为止已经有了这个基本程序

package main

import (
    "github.com/labstack/echo"
   "github.com/labstack/echo/middleware"
    "net/http"
)

func main() {
  var html string;
    // Echo instance
    e := echo.New()

    // Route => handler
    e.GET("/", func(c echo.Context) error {

  e.Group("/").Use(middleware.BasicAuth(func(username, password string, c echo.Context) (bool, error) {
    if username == "user" && password == "password" {
      html ="Authenticated"
      return true, nil
    }
    return false, nil
}))


        return c.HTML(http.StatusOK, html)
    })

    // Start server
    e.Logger.Fatal(e.Start(":1323"))
}

它提示输入用户名和密码,但经过身份验证后我得到

未找到信息”

如果有任何建议或使用 echo 框架的基本身份验证的工作代码链接,我们将不胜感激。


解决方案


除了fstanis回答here之外,我想指出的是,您应该小心echo组对象的引用。

所以我认为你应该这样做

e := echo.New()
g := e.Group("")
g.Use(middleware.BasicAuth(func(username, password string, c echo.Context) (bool, error) {
  if username == "joe" && password == "secret" {
    return true, nil
  }
  return false, nil
}))

// note that it was previously referring to the echo instance, not group.
g.GET("/", func(c echo.Context) error {
    return c.HTML(http.StatusOK, html)
})

请注意,g 引用组 e.group(""),这可确保 get "/" 的处理程序将返回正确的 html。因此,对于基本身份验证中间件是应用在 group 还是 echo e 的根实例上,没有任何歧义。

以上就是《使用 Echo 框架进行基本身份验证》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>