我正在Google App Engine上构建一个网站,运行
python和Django非rel.一切都适用于HTML和发布/读取数据.但随着我的前进,我想用AJAX进行许多更新,最终还要通过
Android和iPhone等移动设备进行更新.
我的页面使用django non-rel,我的登录/注销认证对HTML非常有用.但是,通过JSON发送的更新信息必须经过身份验证,用户才能进行更改.我看到如何对AJAX调用进行身份验证并不会太困难,因为你仍然会访问网站,但是什么时候投入手机身份验证呢?
所以我是新手,我从哪里开始?
如何在gae上设置服务,以便我可以进行经过身份验证的CRUD操作?理想情况下,我想为ajax,android等使用完全相同的REST服务.
最佳答案 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请求并进行相应调整.
>具体实施RPC Model for handling ajax requests.
对于实际处理身份验证,您可以使用google.appengine.ext users库并使用Google帐户身份验证,或者您可以编写自己的身份验证. Writing your own当然意味着实现session mechanism(用于在整个用户会话中保留状态)并将密码存储在散列和盐渍状态以进行验证.