2

我一直在开发一个移动应用程序来访问我的一个 django 网站。我使用 TastyPie 完成了 restful API,并使用 JQMobile 开发了前端。我已经到了我想要登录用户并有权访问该登录用户的部分。

我已经做了很多阅读和搜索,但我仍然不确定什么是最好的方法。理想情况下,我想使用用户名和密码登录用户,然后过滤该用户的一些 API 返回数据(我可以通过 TastyPie 文档进行操作)。

其他人如何使用 JQMobile 和 Django 对用户进行身份验证。我也在使用PhoneGap,因此如果需要,我可以将登录返回的用户信息存储在本地存储中。但是我不太确定如何将它们一起编码以使 request.user 在移动用户使用该应用程序时在 django 端可用。

到目前为止,我已经从 TastyPie 方面的 UserResource 中的另一篇文章中提出了这一点,以登录用户,但我不确定用户登录后该怎么做。

class UserResource(ModelResource):
    class Meta:
        queryset = User.objects.all()
        resource_name = 'user'
        list_allowed_methods = ['get', 'post']

    def override_urls(self):
        return [
            url(r"^(?P<resource_name>%s)/signin%s$" %
                (self._meta.resource_name, trailing_slash()),
                self.wrap_view('signin'), name="api_signin"),
        ]

    def signin(self, request, **kwargs):
        self.method_check(request, allowed=['post'])

        # Per https://docs.djangoproject.com/en/1.3/topics/auth/#django.contrib.auth.login...
        username = request.GET['username']
        password = request.GET['password']
        user = authenticate(username=username, password=password)

        if user is not None:
            if user.is_active:
                login(request, user)
                return self.create_response(request, {'success': True})
            else:
                # Return a 'disabled account' error message
                return self.create_response(request, {'success': False})
        else:
            # Return an 'invalid login' error message.
            return self.create_response(request, {'success': False})

有没有人有任何可以共享的代码,或者如何登录用户并维护他们的状态的任何指针?

干杯,本

4

1 回答 1

1

Phonegap 实际上只是一个封装在一些本机代码中的浏览器,这意味着它具有与普通 Web 浏览器一样持久会话的相同方法 - cookie!

每个发送到后端 API 的 ajax 请求都可以sessionid像普通GET请求一样包含 cookie。该requst.user对象将在您的视图中提供给您。

您不需要为此构建任何特殊的东西或使用本地存储。唯一需要验证的是您的域已列入白名单,以便您的应用可以访问它。

于 2012-11-26T11:44:12.653 回答