我无法从其余api的浏览器模式注销当前用户。
这是我的设置
REST_FRAMEWORK = {
'PAGINATE_BY': 10,
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.BasicAuthentication',
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.TokenAuthentication',
),
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
),
}
是因为我使用了会话吗?请帮助。
请求和响应标头:
Request URL:`http://localhost:8000/api/api-auth/logout/?next=/api/city/`
Request Method:GET
Status Code:302 FOUND
Request Headers:
---------------
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Cookie:sessionid=j7qebcdjdwzwqlmep4eyq3svuial43uv; csrftoken=vK3Ghn3QFVbCe3nKx1LDZBTzM7sRiDym
Host:127.0.0.1:8000
Referer:`http://localhost:8000/api/city/`
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36
Query String Parametersview sourceview URL encoded
next:/api/city/
Response Headers
----------------
Content-Type:text/html; charset=utf-8
Date:Mon, 15 Jul 2013 20:46:35 GMT
Location:`http://localhost:8000/api/city/`
Server:WSGIServer/0.1 Python/2.7.4
Set-Cookie:sessionid=b1x24z93dqu384lqirtv5r9npy16s0qx; expires=Mon, 29-Jul-2013 20:46:35 GMT; httponly; Max-Age=1209600; Path=/
Vary:Cookie
答案 0 :(得分:17)
解决了!这是因为启用了BasicAuthentication。我想我通过浏览器中的HTTP登录登录并注销似乎不适用于此。我删除了BasicAuthentication,现在一切似乎都正常。
答案 1 :(得分:4)
实际上注销正在运行,但在注销结束时,在重定向(到需要身份验证的视图,因为我们使用权限IsAuthenticated)的过程中,BasicAuth再次使用缓存的HTTP身份验证标头信息验证请求:
auth = request.META.get('HTTP_AUTHORIZATION', b'')
就像OP说的那样,我们可以禁用BasicAuth并仅使用SessionAuth。但问题是,我们有时可能需要在没有GUI的情况下访问API,我们可以使用TokenAuth代替。由于BasicAuth / TokenAuth无论如何都不那么安全(https://tools.ietf.org/html/rfc2617),我们使用OAuth2或其他更安全的身份验证方案可能会更好。无论如何,这取决于要求。
答案 2 :(得分:2)
我今天遇到了这个问题,并通过将订单更改为以下内容来解决此问题:
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.BasicAuthentication',
'rest_framework.authentication.TokenAuthentication',
),