gpt4 book ai didi

google-app-engine - 特定页面的谷歌应用引擎身份验证

转载 作者:数据小太阳 更新时间:2023-10-29 03:07:33 26 4
gpt4 key购买 nike

我正在尝试在 golang 平台上使用 google-app-engine 进行开发,我希望仅在特定页面上执行检查(针对登录用户)。

例如:

访问“/”路径的用户如果已登录,将被重定向到“/site”,或者将显示有关该产品的页面。

当用户访问“/members”、“/users”、“/items”页面时,如果未通过身份验证,将被重定向到登录页面。

一个简单的 go 代码建议:

package hello

import (
"fmt"
"net/http"

"appengine"
"appengine/user"
)

func init() {
http.HandleFunc("/", site)
http.HandleFunc("/", members) // etc for "items" and "products" and whatever restricted pages
}

func user_logged_in() bool {
// do the check ...
return true
}

func user_not_logged_in() {
// fatal error message
}

func site(w http.ResponseWriter, r *http.Request) {
if !user_logged_in() {
// show "about" page
} else {
// show a "user" page
}
}

func members(w http.ResponseWriter, r *http.Request) {
if !user_logged_in() {
// show "members" page
} else {
user_not_logged_in() // fatal error message
}
}

然而这感觉有点老套,我希望我可以在 init 函数中测试页面 URL 并预处理用户帐户一次,而不是从我的代码中的任何地方调用检查器函数 ...

让 http 调度程序仅在用户登录时才调用我的“需要登录”页面的好做法是什么?

最佳答案

init 函数只初始化您的应用程序。例如,您可以使用它来注册 HTTP 处理程序,但它不会在每个请求上运行。

如果您使用其中一种标准身份验证方法,您可以在 app.yaml 配置文件中声明授权。对于您的用例,它与此类似:

handlers:

- url: /members/.*
script: _go_app
login: required

- url: /users/.*
script: _go_app
login: required

- url: /items/.*
script: _go_app
login: required

- url: /.*
script: _go_app

看看 docs了解更多详情。

关于google-app-engine - 特定页面的谷歌应用引擎身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23445808/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com