angular2/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

我正在构建一个应用程序,前端是angular2,后端是Django rest。即使在我登录到我的应用程序后,浏览器仍会再次请求登录,如下所示:

这种情况每天都会发生,但在同一天连续登录时不会发生。为什么会发生这种情况

My Django rest配置代码:

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返回我存储在本地存储器中的令牌