即使使用TokenAuthentication

时间:2018-03-20 15:34:49

标签: django django-rest-framework

我正在为移动和Web环境构建服务器,我希望将会话身份验证与令牌身份验证一起使用。然而,这些似乎彼此不一致。 我对两种方案中的登录都有不同的看法。

如果我以可浏览API内的用户身份登录,然后为其他用户发送令牌登录请求,则服务器会抱怨没有CSRF令牌。但是,如果我退出,突然没有问题。

我不确定在实现前端后登录会有多严重,登录来自不同的设备,但到目前为止看起来不太好。

如果传递了正确的Authorization: Token <token>标头,是否知道如何停止要求CSRF令牌?或者对我的问题有不同的解决方案?

1 个答案:

答案 0 :(得分:1)

DRF的默认SessionAuthentication后端的构建方式是,如果您在请求中提供有效会话,它将启用CSRF验证。有两种可能的解决方案:或者不要同时使用两种身份验证方法(在请求中发送有效会话cookie时不使用令牌)或者通过将TokenAuthentication后端置于SessionAuthentication之上来确定令牌身份验证的优先级} DEFAULT_AUTHENTICATION_CLASSES设置。