当我运行以下代码时
user = users.get_current_user()
if users.is_current_user_admin():
loggedin = 'Admin'
elif user:
loggedin = 'User'
else:
loggedin = 'Anonymous'
在开发环境中,当我以管理员身份登录时获得管理员,以用户身份登录,在未登录时获得匿名。在生产环境中,我总是获得匿名。为什么这不起作用?
当我运行以下代码时
user = users.get_current_user()
if users.is_current_user_admin():
loggedin = 'Admin'
elif user:
loggedin = 'User'
else:
loggedin = 'Anonymous'
在开发环境中,当我以管理员身份登录时获得管理员,以用户身份登录,在未登录时获得匿名。在生产环境中,我总是获得匿名。为什么这不起作用?
该问题与 if/elif/else 或 users.create_login_url() 无关。问题是当用户使用 HTTPS 和 users.create_login_url() 登录时,App Engine 无法识别在 http 请求中登录的用户。我在这里创建了一个新问题。我相信这与 cookie 的设置方式有关。
代码在 Dev 而不是生产环境中工作的原因是开发环境如何处理 HTTPS url,它将其重新映射到 http 并为请求提供服务,从而避免了问题。
您首先需要通过 users.create_login_url() 登录