簡體   English   中英

CSRF驗證失敗。 請求中止。 Django 1.10和Angular 1.6

[英]CSRF verification failed. Request aborted. Django 1.10 and Angular 1.6

我正在使用django,djangoRestFramework和Angular1.x開發單頁應用程序。 我已經使用內置的login方法實現了登錄視圖,但是每當我向api發出請求時,它都會返回,且csrf驗證失敗。

我將登錄視圖包裹在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管理頁面時,它不會給我錯誤。 我在這里找不到問題,任何幫助將不勝感激

實際上,這對我來說適用於1.4版本

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM