2017-06-20 94 views
0

我正在使用django,djangoRestFramework和Angular1.x處理單個頁面的應用程序。我已經使用內置的登錄方法實現了登錄視圖,但是每當我向api發出請求時,都會返回csrf驗證失敗。CSRF驗證失敗。請求中止。 Django 1.10和Angular 1.6

我包裹着我的登錄觀點與csrf_protect裝飾,如:

class LoginView(views.APIView): 

    @method_decorator(csrf_protect) 
    def post(self, request): 
     user = authenticate(
      username=request.data.get('username'), 
      password=request.data.get('password') 
     ) 

     if user is None or not user.is_active: 
      return Response({ 
       'status': 'Unauthorized', 
       'message': 'Username or password incorrect' 
      }, status=status.HTTP_401_UNAUTHORIZED) 

     login(request,user) 
     return Response(UserSerializer(user).data) 

,我跑angular.config這樣的:

angular.run(['$http', function($http) { 
    $http.defaults.xsrfHeaderName = 'X-CSRFToken'; 
    $http.defaults.xsrfCookieName = 'csrftoken'; 
}]) 

當我拿出csrf_protect裝飾,但它仍然給了我一個錯誤說 '請求對象沒有屬性會話'。

另外,當我在本地主機上工作,並且在我嘗試登錄之前訪問django管理頁面時,它不會給我一個錯誤。我不能在這裏弄清楚這個問題,任何幫助,將不勝感激

回答

0

其實這對我的作品有角1.4,

var myApp = angular.module('myApp', []).config(function($httpProvider) 
{ 
    $httpProvider.defaults.xsrfCookieName = 'csrftoken' 
    $httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken' 
}); 
相關問題