CSRF验证失败。请求中止。 Django 1.10和Angular 1.6

时间:2017-06-20 16:48:23

标签: python angularjs django

我正在使用django,djangoRestFramework和Angular1.x处理单页面应用程序。我已经使用内置的登录方法实现了一个登录视图,但是无论何时我向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装饰器时,它仍然给我一个错误说 '请求对象没有属性会话'。

此外,当我正在使用localhost并且在尝试登录之前访问django管理页面时,它不会给我一个错误。我无法在这里找出问题,任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

实际上这对我来说有角度1.4,

Supplier<...>