tutorial guardian framework create based django angularjs django-rest-framework django-rest-auth

guardian - django rest framework tutorial



Las credenciales de autenticación de Django Rest Framework no se proporcionaron (2)

Estoy usando django-rest-auth con django-all-auth en DRF y Angularjs. En cualquier solicitud con respecto a la autenticación, me sale el siguiente error:

{"detail":"Authentication credentials were not provided."}

Pasando a través de SO, me di cuenta de que hay muchos problemas similares, así que acumulándolos juntos, intenté lo siguiente:

settings.py

INSTALLED_APPS = ( ''django.contrib.admin'', ''django.contrib.auth'', ''django.contrib.contenttypes'', ''django.contrib.sessions'', ''django.contrib.staticfiles'', ''django.contrib.sites'', ... ''rest_framework'', ''rest_framework.authtoken'', ''rest_auth'', ... ''allauth'', ''allauth.account'', ''rest_auth.registration'', ''allauth.socialaccount'', ''allauth.socialaccount.providers.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'', ) DEFAULT_AUTHENTICATION = { ''DEFAULT_AUTHENTICATION_CLASSES'': ( ''rest_framework.authentication.OAuth2Authentication'', ''rest_framework.authentication.TokenAuthentication'', ), } REST_FRAMEWORK = { ''DEFAULT_PERMISSION_CLASSES'': ( ''rest_framework.permissions.IsAdminUser'' ), } AUTHENTICATION_BACKENDS = ( "django.contrib.auth.backends.ModelBackend", "allauth.account.auth_backends.AuthenticationBackend" ) TEMPLATE_CONTEXT_PROCESSORS = ( "django.core.context_processors.request", "django.contrib.auth.context_processors.auth", "allauth.account.context_processors.account", "allauth.socialaccount.context_processors.socialaccount", ) REST_SESSION_LOGIN = False

Mi archivo app.js

sgApp.config([''$routeProvider'',''$locationProvider'', ''$httpProvider'', function($routeProvider, $locationProvider, $httpProvider){ $routeProvider.when(''/'',{ templateUrl: ''/static/partials/index.html'', controller: ''indexCtrl'' }).when(''/abc'',{ templateUrl: ''static/partials/index.html'' }).otherwise({ redirectTo: ''/'' }); $locationProvider.html5Mode(true).hashPrefix(''!''); $httpProvider.defaults.xsrfCookieName = ''csrftoken''; $httpProvider.defaults.xsrfHeaderName = ''X-CSRFToken''; } ]).controller(''someCtrl'', function($scope, $http, $httpProvider){ $scope.login = function() { Facebook.login(function(response) { var postDict = { access_token: response.authResponse.accessToken } $http.post(''/sgAuth/facebook/'', postDict). success(function(data){ $httpProvider.defaults.headers.common.Authorization = ''Token '' + data.key; $scope.loggedIn = true; $scope.userDetails(); //function that gets user details }); }); }; });

¿Dónde estoy equivocado?


Tienes clase de permiso en tu configuración:

REST_FRAMEWORK = { ''DEFAULT_PERMISSION_CLASSES'': ( ''rest_framework.permissions.IsAdminUser'' ), }

Por lo tanto, solo se realizan las solicitudes realizadas por el usuario administrador.


Tuve el mismo problema en tu línea:

$ httpProvider.defaults.headers.common.Authorization = ''Token'' + data.key;

Prueba esto:

httpProvider.defaults.headers.common.Authorization = ''JWT'' + data.key;

Saludos.