我正在Google App Engine上构建一个网站,运行python和Django非rel。一切都适用于HTML和发布/读取数据。但随着我的前进,我想用AJAX进行许多更新,最终还是通过Android和iPhone等移动设备进行更新。
我的网页使用django non-rel,我的登录/注销身份验证非常适合HTML。但是,通过JSON发送的更新信息必须经过身份验证,用户才能进行更改。我看到如何对AJAX调用进行身份验证并不会太困难,因为你仍然会访问网站,但是什么时候投入手机身份验证呢?
所以我是新手,我从哪里开始?
如何在gae上设置服务,以便我可以进行经过身份验证的CRUD操作?理想情况下,我想为ajax,android等使用完全相同的REST服务。
答案 0 :(得分:2)
Python使这非常简单,你可以创建一个检查auth的装饰器方法,并将装饰器添加到任何需要auth凭证的方法。
def admin(handler_method):
"""
This decorator requires admin, 403 if not.
"""
def auth_required(self, *args, **kwargs):
if users.is_current_user_admin():
handler_method(self, *args, **kwargs)
else:
self.error(403)
return auth_required
...
@admin
def crudmethod_update(self, *args, **kwargs):
...
请注意,这假定了一些关于如何抓取用户数据的事情,但主要内容与任何设置相同。您可能正在努力的概念是ajax调用在服务器上以不同的方式处理,但就像任何安静的方法一样,您真正得到相同的标题。如果你可以检查标准html请求的身份验证,你可以完全用ajax请求劫持表单提交并获得相同的结果。你可能想要取回JSON或者更小的HTML,并为此想要:
添加您可以在请求中检查的内容,以了解它是ajax请求并进行相应调整。
对于实际处理身份验证,您可以使用google.appengine.ext users库并使用Google帐户身份验证,也可以自行编写。 Writing your own当然意味着实现session mechanism(用于在整个用户会话中保留状态)并将密码存储在散列和加盐状态以进行验证。