带有angularjs的app引擎上的身份验证应用

时间:2012-10-24 18:00:30

标签: google-app-engine angularjs

设定:

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

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

您通常如何登录/退出用户,确定用户是否登录/退出,用户是这样的应用程序的管理员?

2 个答案:

答案 0 :(得分:7)

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

这是我采取的方法:

  1. 用户访问该网站 - 加载html和javascript

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

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

    如果用户 ,则会返回401错误。

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

  4. 那么,你如何使用App Engine的用户服务呢?

    在您的请求处理程序中,网址为'/ 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是更好的选择。