gpt4 book ai didi

python - App Engine/Python/Django 非 JSON 上的身份验证

转载 作者:太空宇宙 更新时间:2023-11-03 11:35:50 24 4
gpt4 key购买 nike

我正在 Google App Engine 上构建一个站点,运行 python 和 Django non-rel。一切都适用于 HTML 和发布/读取数据。但随着我的前进,我想使用 AJAX 进行许多更新,并最终通过 Android 和 iPhone 等移动设备进行更新。

我的页面使用 django non-rel,我的登录/注销身份验证非常适合 HTML。但是通过 JSON 发送的更新信息必须经过身份验证,用户才能进行更改。我看到仅对 AJAX 调用进行身份验证不会太困难,因为您仍在访问该网站,但是如果使用手机身份验证呢?

所以我是新手,我该从哪里开始呢?

如何在 gae 上设置服务以便进行经过身份验证的 CRUD 操作?理想情况下,我想为 ajax、android 等使用完全相同的 REST 服务。

最佳答案

Python 使这变得非常简单,您只需创建一个装饰器方法来检查身份验证并将装饰器添加到需要身份验证凭据的任何方法。

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 调用在服务器上的处理方式有所不同,但就像任何 restful 方法一样,您实际上得到的是相同的 header 。如果您可以检查标准 html 请求的身份验证,您可以完全使用 ajax 请求劫持表单提交并获得相同的结果。您可能想要取回 JSON 或一小段 HTML,为此您想要:

  1. 添加一些您可以在请求中检查以了解它是一个 ajax 请求并进行相应调整的内容。

  2. 实现 RPC Model for handling ajax requests具体来说。

要实际处理身份验证,您可以使用 google.appengine.ext users库并使用 google accounts auth 或者你可以自己编写。 Writing your own当然意味着实现 session mechanism (用于在整个用户 session 中保留状态)并将密码存储在哈希和加盐状态中以进行验证。

关于python - App Engine/Python/Django 非 JSON 上的身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3771610/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com