Golang使用Echo框架实现Basic Auth时报函数类型不匹配错误如何解决
错误原因
该类型不匹配报错的核心原因是Echo v4版本的middleware.BasicAuthValidator接口要求校验函数的返回值为两个:第一个是代表校验是否通过的bool值,第二个是error类型值,你自定义的校验函数仅返回了单个bool值,和要求的函数签名不一致。
修复方案
调整传入middleware.BasicAuth的匿名函数返回值格式即可,校验通过时返回(true, nil),校验失败时返回(false, nil)即可。另外你现有代码缺失getHome处理函数的定义,也需要补充避免编译报错。
修复后的完整代码如下:
package main import ( "github.com/labstack/echo/v4" "github.com/labstack/echo/v4/middleware" "net/http" ) // 补充缺失的getHome处理函数 func getHome(c echo.Context) error { return c.String(http.StatusOK, "身份验证通过,访问成功") } func main(){ e := echo.New() g := e.Group("/home") // 调整匿名函数的返回值为 (bool, error) 匹配接口要求 g.Use(middleware.BasicAuth(func (username, password string, c echo.Context) (bool, error) { if username=="iamsns" && password=="Iamsns355@" { return true, nil } return false, nil })) g.POST("/login", getHome) e.Start(":8008") }
内容的提问来源于stack exchange,提问作者Shiv Sharma
相关产品推荐
相关产品推荐

