本教材由知了传课辛苦制作而成,仅供学习使用,请勿用于商业用途!如进行转载请务必注明出处!谢谢!

BasicAuth中间件

一、BasicAuth中间件的使用

// 局部使用中间价
chap05.GET("/basic",gin.BasicAuth(gin.Accounts{
"zs":"123456",
"ls":"123",
"ww":"1234",
}),BasicAuthTest)


// 私有数据
var map_data map[string]interface{} = map[string]interface{}{
"zs":gin.H{"age":18,"addr":"zs-xx"},
"ls":gin.H{"age":19,"addr":"ls-xx"},
"ww":gin.H{"age":20,"addr":"ww-xx"},
}


// 获取私有数据。如果没有权限则获取不到
func BasicAuthTest(ctx *gin.Context) {

user_name := ctx.Query("user_name")

data ,ok := map_data[user_name]

if ok{
ctx.JSON(http.StatusOK,gin.H{"user_name":user_name,"data":data})
}else {
ctx.JSON(http.StatusOK,gin.H{"user_name":user_name,"data":"没有权限"})
}
}

一文读懂HTTP Basic身份认证:https://juejin.im/entry/6844903586405564430

执行逻辑:

登录页面(没有中间件) – 会设置session – 其他路由回去session的key – 获取对应的数据

二、WrapF

gin.WrapF(IndexHandler) func IndexHandler(w http.ResponseWriter, r *http.Request) { ... }

三、WrapH和WrapF的区别

需要自己去定义struct实现这个Handler接口

type TestStruct struct {}

func (test *TestStruct) TestH(w http.ResponseWriter, r *http.Request) {
...
}

1394人已阅读,今天你学习了吗?

添加新回复
目录