我想在用 golang 编写的 Web 应用程序中确定一种简单而有用的用户身份验证模式。
我想出了两种模式。第一个是使程序员能够将他的功能与身份验证逻辑分开,并且具有更清晰的HandleFunc部分,main()因为人们只能通过main()查看哪些部分在身份验证控制下才能看到。
第二个是让程序员在每个函数中包含一个处理身份验证所需 url 的决定。一个if由语句检查authp()功能,其他地方定义。
对于这种必要性,哪一种是更好的模式?
这项工作的更好模式是什么?
如果不是一个合适的解决方法,是否甚至可以将一个函数传递给 http.HandleFunc,该函数具有除func urlFunc (ResponseWriter, *Request)bu likefunc urlFunc (successFunc, failFunc)或func urlFunc (ResponseWriter, *Request, successFunc, failFunc)as in authenticationGateKeeperfunction of First Way以外的签名?
//First Way
package main
func authGateKeeper(successFunc, failFunc) {
if (authp()) {
successFunc
} else {
failFunc
}
}
func authp() boolean {
//authentication logic, db query, or session check etc.
}
//usage in main
http.HandleFunc("/", authGateKeeper)
//Second Way; other alternative, in each function check pattern
func f(w, r) {
if (authp()) {
//function's processes
} else {
//the fail case function or processes
}
}
func authp() boolean {
//authentication logic, db query, or session check etc.
}
//usage in main
http.HandleFunc("/", f)
BIG阳
相关分类