13

设置:

  • 模板:angularjs(全部从 app.yaml 静态提供)
  • api:angularjs 控制器用于从应用程序中提取数据的 json 响应

页面内容由静态文件提供,因此无法使用users.create_login_url()users.create_logout_url()等。

您通常如何处理用户登录/注销,确定用户是否登录/注销,用户是此类应用程序的管理员?

4

2 回答 2

7

我实际上正在自己解决这个问题。该项目名为Sapling——它是一个涵盖用户管理的 AngularJS 入门项目。

这是我采取的方法:

  1. 用户来到网站——加载 html 和 javascript

  2. 加载 Angular 后GET,向'/api/user/me'. 如果用户已登录,则返回用户的表示,例如

    { 
      "name": "Bob",
      "admin": false,
      // ect.
    }
    

    如果用户未登录,则返回错误401

  3. 如果返回用户对象——检查用户是否也是管理员。如果401收到 a 将用户重定向到登录页面(您可以在 Angular 应用程序中创建一个登录页面,或者如果您觉得用户不会感到困惑,您可以直接将它们发送到 Google 登录)。

那么,您如何使用 App Engine 的用户服务来做到这一点?

在 URL '/api/user/me'的请求处理程序中

打电话get_current_user()is_current_user_admin()

  • 用户已登录 - 附加管理员boolean并将用户的表示形式返回为 json。

  • 用户未登录——返回401未授权,即response.set_status(401)

您如何将用户引导到登录和注销 url?

您可以在以下 url 创建请求处理程序:

'api/用户/登录'

webapp2.redirect(users.create_login_url())

'api/用户/注销'

webapp2.redirect(users.create_logout_url())

并将用户从 Angular 引导至他们。

我认为我涵盖了基础知识。如果您需要更多详细信息,请告诉我。

于 2012-10-25T05:11:22.190 回答
-2

另请参阅此问题: 在提供静态内容时使用 GAE 限制对静态文件的访问。

在您的处理程序中,您可以使用用户服务来找出谁登录了,以及这个“用户”是否是管理员。一个例子:https ://developers.google.com/appengine/docs/python/users/overview

如果您使用客户端应用程序,OAUTH2 是更好的选择。

于 2012-10-24T21:41:49.820 回答