0

我正在使用带有 django 的主干.js,我想在对我的应用程序的初始请求之后立即/获取当前登录的用户。

我确实有一个UserResource设置,所以我可以进行 api 调用api/v1/user/id,但这意味着我必须知道id我正在寻找的我不知道。在传统的 django 请求视图中,我将拥有该request.user对象。我在客户端也可以使用它吗?如果没有,我该如何拨打电话request.user

编辑:

由于我在 Django 中使用传统身份验证,并且在授权用户之后,主干从那里开始。我可以在我的 base.html 文件中创建一个变量来存储当前登录用户的唯一 ID,如下所示:

var user = {{user}}; // which shows the username 

这有什么风险吗

4

2 回答 2

6

查看 TastyPie Cookbook 中的“创建每个用户资源”示例

http://django-tastypie.readthedocs.org/en/latest/cookbook.html#creating-per-user-resources

但是,文档已过时,并且 API 已更改。方法签名已更改,请求现在是捆绑包的一个属性。

def authorized_read_list(self, object_list, bundle):

您可以从bundle.request.user

另见https://github.com/toastdriven/django-tastypie/issues/809

于 2013-03-08T01:37:01.333 回答
0

以下会将用户 ID 放在响应的元数据中:

def alter_list_data_to_serialize(self, request, data_dict):
    if isinstance(data_dict, dict):
        if 'meta' in data_dict:
            if request.user and request.user.pk:
                data_dict['meta']['user_id'] = request.user.pk

    return data_dict

就个人而言,我从来没有需要这样做。我将用户对象放入页面上下文服务器端。即使对于单页 RESTful 应用程序,我也会在登录时发出标准请求/响应(不是 AJAX),并填充内容/上下文服务器端。

任何后续的 AJAX 请求都不应包含用户 ID,就像不应在 URL 中传递用户 ID 一样。您应该在服务器端识别用户并进行相应的过滤。Django 使这变得非常容易,使用 AuthenticationMiddleware 向用户公开。

于 2013-03-11T09:10:06.277 回答