成功进行TokenAuthentication后,core-api请求不包括用户

时间:2019-08-05 13:22:29

标签: django-rest-framework core-api

我正在使用django-rest-framework定义供Python客户端使用的REST API。客户端使用coreapi访问API。我使用中间件记录了对服务器应用程序的所有访问。

我希望客户端通过用户名和密码进行身份验证。然后,我使用这些凭据从auth-token端点接收相应用户的令牌,并将此令牌用于coreapi.auth.TokenAuthentication。然后,我希望coreapi以提供了凭据和令牌的用户的名义发送请求,但是用coreapi发出的请求不包括用户。

我尝试使用coreapi.auth.BasicAuthenticationcoreapi.auth.TokenAuthentication。在这两种情况下,我都可以进行身份​​验证并接收正确的API端点,但是在我的中间件中记录coreapi发出的请求时,没有设置用户。

客户代码

client = coreapi.Client()
schema = client.get(schema_url)

这时我收到了模式:

token-auth: {
   create(username, password)
}

然后我使用token-auth端点为我的用户获取令牌。

response = client.action(schema, ['token-auth', 'create'], params={'username': username, 'password': password})
auth = coreapi.auth.TokenAuthentication(scheme='Token', token=response['token'])

client = coreapi.Client(auth=auth)
schema = self.client.get(schema_url)

该架构现在看起来很完整。

token-auth: {
    create(username, password)
}
users: {
   list([page])
   recent_users()
   read(id)
}
# ...

中间件

我的中间件为每个收到的请求创建Log对象,并像这样追加用户:

if request.user.is_authenticated:
    logs_data['user'] = request.user

中间件成功记录了我的Python coreapi客户端发出的所有请求,并相应地设置了字段。例如,请求元数据中包含'HTTP_USER_AGENT': 'coreapi'。我希望将request.user设置为用于较早进行身份验证的用户,但是我收到的只是AnonymousUsers。

有没有办法使用包括用户在内的coreapi发送经过身份验证的请求?

0 个答案:

没有答案