如何检查数百和数千个API端点的身份验证?

如何检查数百和数千个API端点的身份验证?,第1张

概述我目前正在golang(与Gorilla)构建一个Web应用程序,并实现了一些API端点.但是,我注意到每次实现类似的功能 func CreateUserHandler(w http.ResponseWriter, r *http.Request) {} 我必须将下面的函数添加到处理函数体中以检查请求是否被授权: func checkAuthorizedUser (r * http.Request 我目前正在golang(与Gorilla)构建一个Web应用程序,并实现了一些API端点.但是,我注意到每次实现类似的功能

func createuserHandler(w http.ResponseWriter,r *http.Request) {}

我必须将下面的函数添加到处理函数体中以检查请求是否被授权:

func checkAuthorizedUser (r * http.Request) error {    uID,err := CheckRequestUser (r.cookie("uID"))    if err != nil {        return errors.New("Can't find cookie value for uID")    }    if !IsValIDUser (uID.Value) {         return errors.New("Not a valID user")    }    return nil}

我现在发生的事情是我必须将checkAuthorizedUser()添加到每个处理函数,到目前为止我已经有很多处理函数.我想知道是否有更好的方法来检查客户端是否有权访问某个端点,而不是在每个处理函数中显式检查身份验证.

解决方法 大猩猩有一个你可以使用的路由器.然后,您可以使用身份验证检查包装路由器.像这样的东西会起作用:

func checkPermissions(h http.Handler) http.HandlerFunc {    return func(w http.ResponseWriter,r *http.Request) {        authCheck := true //implement the actual checking        if authCheck {            w.WriteError(w,400,"error")            return        }        h.Servehttp(w,r)    }}func main() {    r := mux.NewRouter()    r.HandleFunc("/",HomeHandler)    r.HandleFunc("/products",ProductsHandler)    r.HandleFunc("/articles",ArticlesHandler)    http.Handle("/",checkPermissions(r))}

支持链接:

https://godoc.org/github.com/gorilla/mux#NewRouter

https://github.com/gorilla/mux

总结

以上是内存溢出为你收集整理的如何检查数百和数千个API端点的身份验证?全部内容,希望文章能够帮你解决如何检查数百和数千个API端点的身份验证?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1074808.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存