Python Tastypie将登录用户识别为匿名用户

Python Tastypie将登录用户识别为匿名用户,python,django,tastypie,Python,Django,Tastypie,我将Django应用程序部署到远程服务器,但tastypie无法识别远程服务器上的登录用户 我有一个Tastype资源,用于过滤属于当前登录用户的所有对象: def apply_authorization_limits(self, request, object_list): return object_list.filter(user=request.user) 当我尝试在端点上为对象执行GET请求时,会出现以下错误: int() argument must be a strin

我将Django应用程序部署到远程服务器,但tastypie无法识别远程服务器上的登录用户

我有一个Tastype资源,用于过滤属于当前登录用户的所有对象:

  def apply_authorization_limits(self, request, object_list):
    return object_list.filter(user=request.user)
当我尝试在端点上为对象执行GET请求时,会出现以下错误:

int() argument must be a string or a number, not 'AnonymousUser
我猜是因为登录不正确

还是真的?在模板页面上,我有以下代码:

{% if user.is_authenticated %}
  Logged in as <strong>{{ user.username }}</strong>
  <a href="/users/logout">Logout</a>
{% else %}
  <a href="/users/signup">Signup</a>
  <a href="/users/login">Login</a>
{% endif %}
如果我将身份验证更改为ApiKeyAuthentication,那么我必须在每个GET/post请求中将用户名和api密钥发布到资源。这样做的问题是,我必须创建一个新的中间视图,查询用户名和视图,然后获取/发布到tastype端点。还有别的解决办法吗?
第二种方法是将用户名和apikey嵌入webapp,让JS获取这些值并将它们添加到get/POST查询字符串中,但这可能会导致安全问题。这将是一个安全问题,因为如果用户有用户名和api密钥,他们可以假装是另一个用户。

首先:APIKeyAuth:这就像另一个用户通过不安全的连接获得用户名和密码或会话id一样是一个问题

第二:如果您想使用基于会话的身份验证(它只在浏览器中工作,对于当前登录的用户),您需要创建自己的身份验证后端,详细信息请参见


从那里向上滚动一点,阅读关于您选择的身份验证方法的严重警告

First:APIKeyAuth:这就像另一个用户通过不安全的连接获取用户名和密码或会话id一样,是一个问题

第二:如果您想使用基于会话的身份验证(它只在浏览器中工作,对于当前登录的用户),您需要创建自己的身份验证后端,详细信息请参见


从那里向上滚动一点,阅读关于您选择的身份验证方法的严重警告

您如何向
tastype
发出请求?是AJAX还是其他什么?登录和匿名时,您请求的确切URL是什么?它们完全在同一个域上吗?我通过AJAX制作它们。如果用户登录或匿名,则URL相同。Tastypie处理用户登录或未登录的情况。请求是从同一个域发出的。我几乎可以肯定有什么东西阻止sessionid sookie访问服务器。在Firebug(或web inspector)中查看您的请求,它们是否包含sessionid cookie?请发布您的资源代码。此行为取决于Meta的值。authentication@IssacKelly我添加了资源代码的身份验证方法。如何向
tastype
发出请求?是AJAX还是其他什么?登录和匿名时,您请求的确切URL是什么?它们完全在同一个域上吗?我通过AJAX制作它们。如果用户登录或匿名,则URL相同。Tastypie处理用户登录或未登录的情况。请求是从同一个域发出的。我几乎可以肯定有什么东西阻止sessionid sookie访问服务器。在Firebug(或web inspector)中查看您的请求,它们是否包含sessionid cookie?请发布您的资源代码。此行为取决于Meta的值。authentication@IssacKelly我添加了资源代码的身份验证方法。如何基于会话推出身份验证?我相信会话不会自动包含有关当前登录用户的信息(或者是否包含?),这意味着我必须通过自定义身份验证访问request.user。但是,我无法做到这一点,因为当我尝试从自定义身份验证后端访问request.user时,我会返回AnonymousUser。不过,我只是在Javascript标记中添加了用户名和api密钥,这样我就可以在页面的其余部分访问它。我如何基于会话进行身份验证?我相信会话不会自动包含有关当前登录用户的信息(或者是否包含?),这意味着我必须通过自定义身份验证访问request.user。但是,我无法做到这一点,因为当我尝试从自定义身份验证后端访问request.user时,我会返回AnonymousUser。不过,我只是在Javascript标记中添加了用户名和api密钥,因此我可以在页面的其余部分访问它。
authentication = Authentication()