设置:
- 模板:angularjs(全部从 app.yaml 静态提供)
- api:angularjs 控制器用于从应用程序中提取数据的 json 响应
页面内容由静态文件提供,因此无法使用users.create_login_url()、users.create_logout_url()等。
您通常如何处理用户登录/注销,确定用户是否登录/注销,用户是此类应用程序的管理员?
设置:
页面内容由静态文件提供,因此无法使用users.create_login_url()、users.create_logout_url()等。
您通常如何处理用户登录/注销,确定用户是否登录/注销,用户是此类应用程序的管理员?
我实际上正在自己解决这个问题。该项目名为Sapling——它是一个涵盖用户管理的 AngularJS 入门项目。
这是我采取的方法:
用户来到网站——加载 html 和 javascript
加载 Angular 后GET
,向'/api/user/me'
. 如果用户已登录,则返回用户的表示,例如
{
"name": "Bob",
"admin": false,
// ect.
}
如果用户未登录,则返回错误401
。
如果返回用户对象——检查用户是否也是管理员。如果401
收到 a 将用户重定向到登录页面(您可以在 Angular 应用程序中创建一个登录页面,或者如果您觉得用户不会感到困惑,您可以直接将它们发送到 Google 登录)。
在 URL '/api/user/me'的请求处理程序中
打电话get_current_user()
和is_current_user_admin()
用户已登录 - 附加管理员boolean
并将用户的表示形式返回为 json。
用户未登录——返回401
未授权,即response.set_status(401)
您可以在以下 url 创建请求处理程序:
'api/用户/登录'
webapp2.redirect(users.create_login_url())
'api/用户/注销'
webapp2.redirect(users.create_logout_url())
并将用户从 Angular 引导至他们。
我认为我涵盖了基础知识。如果您需要更多详细信息,请告诉我。
另请参阅此问题: 在提供静态内容时使用 GAE 限制对静态文件的访问。
在您的处理程序中,您可以使用用户服务来找出谁登录了,以及这个“用户”是否是管理员。一个例子:https ://developers.google.com/appengine/docs/python/users/overview
如果您使用客户端应用程序,OAUTH2 是更好的选择。