2

你好。我在 Google App Engine 中使用 go 语言。我无法获取登录用户的信息。同样,无法获取登录 URL 和注销 URL。所有 nil 都将被退回。user.IsAdmin (c) 返回 false。请帮我。



admin.go

func Entry(w http.ResponseWriter, r *http.Request) {
    ...
    c := appengine.NewContext(r)

    inUrl, err := user.LoginURL(c, "/admin/top/")
    ...
}

func AdminTop(w http.ResponseWriter, r *http.Request) {
    ...
    c := appengine.NewContext(r)
    booisadmin := user.IsAdmin(c)
    u := user.Current(c)
    outUrl, err := user.LogoutURL(c, "/")
    ...
}




app.yaml

runtime: go116

app_engine_apis: true

handlers:
  - url: /assets/css
    mime_type: text/css
    static_dir: assets/css

  - url: /assets/html
    mime_type: text/html
    static_dir: assets/html

  - url: /assets/img
    static_dir: assets/img

  - url: /admin/.*
    login: require
    script: _go_app

  - url: /.*
    script: _go_app

4

1 回答 1

1

当您使用login: requiredin 时app.yaml,您可以通过以下标题获取登录用户信息 -

  • X-Appengine-用户 ID
  • X-Appengine-用户昵称
  • X-Appengine-用户-电子邮件

我在 Go 中确认了上述工作(在我的本地机器上运行)

我相信当您使用用户 API 时,相同的标头应该可以工作,但您始终可以转储所有标头以找出您需要的值。

关于使用User API获取登录/注销 url,当我在本地机器上尝试它时,我也得到了空白值,但在 Go 方面我是新手。您可能想尝试在部署到生产时查看调用是否有效

于 2022-03-02T04:09:20.383 回答