angular2/Django rest应用程序浏览器在应用程序登录后要求登录
我正在构建一个应用程序,前端是angular2,后端是Django rest。即使在我登录到我的应用程序后,浏览器仍会再次请求登录,如下所示: 这种情况每天都会发生,但在同一天连续登录时不会发生。为什么会发生这种情况 My Django rest配置代码:angular2/Django rest应用程序浏览器在应用程序登录后要求登录,django,angular,django-rest-framework,Django,Angular,Django Rest Framework,我正在构建一个应用程序,前端是angular2,后端是Django rest。即使在我登录到我的应用程序后,浏览器仍会再次请求登录,如下所示: 这种情况每天都会发生,但在同一天连续登录时不会发生。为什么会发生这种情况 My Django rest配置代码: MIDDLEWARE_CLASSES = [ 'django.contrib.sessions.middleware.SessionMiddleware', 'corsheaders.middleware.CorsMiddl
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.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
]
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.BasicAuthentication',
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.TokenAuthentication',
),
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
),
}
和angular2服务:
login(username: string, password: string) {
let body = JSON.stringify({
'username' : username,
'password': password
});
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
return this.http.post(this._authenticationUrl + 'login/', body, options)
.map(this.extractData)
.catch(this.handleError)
}
为什么会发生这种情况?我的代码中出现了以下问题:
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
),
你应该删除
'rest_framework.authentication.BasicAuthentication',
从默认\u身份验证\u类
,并保留
'rest_framework.permissions.IsAuthenticated',
在
DEFAULT\u PERMISSION\u CLASSES
中,如果您仅从浏览器中的angular访问API,则删除TokenAuthentication
和BasicAuthentication
可能会有所帮助。My angular code和Django code是完全独立的,它们都在不同的端口上运行。我的API返回我存储在本地存储器中的令牌