我正在使用Django Rest Framework,并且已使用rest_auth
的端点设置了登录端点。但是,登录后,如果刷新页面,则登录无效。
我已经通过设置`/ loginCheck'端点对它进行了测试,我在登录后检查如下:
@api_view(['GET',])
@permission_classes([AllowAny,])
def get_user(request):
user = request.user
print(user)
登录后,如果我留在页面上并执行/loginCheck',
打印命令,则会显示活动用户的用户名。但是,在刷新页面时,如果执行相同的功能,则会打印AnonymousUser
。我使用了以下身份验证类
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.SessionAuthentication',
),
)
我正在使用,TokenAuthentication
因为我在SPA中也有一个成功持久的Facebook登录端点。关于永久性的非Facebook登录,我缺少什么?
编辑:
我的设置中间件
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
如果您使用令牌登录,则该令牌仅在该单个请求-响应周期内有效。从设计上讲,它并不像常规的Django浏览器会话那样具有持久性。因此,对于任何后续请求,您需要自己附加令牌的值。从cookie检索或根据您的客户端应用程序通过其他方式存储它。
下面是一些示例代码:
var request = new XMLHttpRequest()
request.setRequestHeader("Authorization", "Token " + token);
request.open("GET", "foo/bar", true);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句