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) {
...
}