设定:
页面内容由静态文件提供,因此无法使用users.create_login_url(),users.create_logout_url()等。
您通常如何登录/退出用户,确定用户是否登录/退出,用户是这样的应用程序的管理员?
答案 0 :(得分:7)
我自己正在努力解决这个问题。该项目名为Sapling - 它是一个涵盖用户管理的AngularJS入门项目。
这是我采取的方法:
用户访问该网站 - 加载html和javascript
加载Angular后,向GET
发出'/api/user/me'
请求。
如果用户登录则返回用户的表示,例如
{
"name": "Bob",
"admin": false,
// ect.
}
如果用户 不 ,则会返回401
错误。
如果返回用户对象 - 请检查用户是否也是管理员。如果收到401
,则会将用户重定向到登录页面(您可以在Angular应用程序中创建登录页面,或者如果您觉得用户不会感到困惑,可以直接将其发送到Google登录页面。)< / p>
在您的请求处理程序中,网址为'/ api / user / me'
致电get_current_user()
和is_current_user_admin()
用户已登录 - 附加admin boolean
并将用户的表示形式返回为json。
用户未登录 - 返回401
未经授权,即response.set_status(401)
您可以在以下网址创建请求处理程序:
<强> 'API /用户/登录'强>
webapp2.redirect(users.create_login_url())
<强> 'API /用户/注销'强>
webapp2.redirect(users.create_logout_url())
并将用户从Angular直接发送给他们。
我认为我涵盖了基础知识。如果您需要更多详情,请告诉我。
答案 1 :(得分:-2)
另请参阅此问题:Limiting access to a static file with GAE 在提供静态内容时。
在您的处理程序中,您可以使用用户服务查找已登录的用户以及此“用户”是否为管理员。 例如:https://developers.google.com/appengine/docs/python/users/overview
如果您使用客户端应用程序,OAUTH2是更好的选择。