Python с использованием фреймворка django - у вас нет разрешения на выполнение этого действия. ОШИБКА - PullRequest
0 голосов
/ 16 марта 2019

У меня есть функция в веб-приложении, где в учетной записи администратора можно настроить проверку для компании, код которой приведен ниже. Теперь, выполняя действие, я не могу понять, по какой причине оно выдает ошибку «У вас нет разрешения на выполнение этого действия ОШИБКА». - 403 Запрещено. В случае, если вы хотите узнать FE, я также предоставил. Спасибо. Надеюсь, это поможет.

HTML

<button ng-click="main.verifyCompany(company,true)" ng-show="company.is_verified" class="btn btn-primary btn-sm">
                                <i class="fas fa-thumbs-up"></i> Approve
                            </button>

FE (угловой)

me.verifyCompany = function (company, verify) {

        if (verify) {
            var message = "Do you really want to activate job posting and other features  for this business account?. Doing so will send an email notification."
        } else {
            var message = "Deactivate posting for this account?."
        }

        confirmSweet.ask(message).then(function (response) {
            if (response) {
                var filter = {}
                filter.id = company.id
                filter.verify = verify
                AdminService.verify_company(me, filter).then(function (response) {
                    if (response.status == "200") {
                        console.log("Response", response.status)
                        me.get_companies()
                    }
                })
            }
        });

    }

КОД ПИТОНА

class VerifyCompany(APIView):

    authentication_classes = (TokenAuthentication,)
    permission_classes = (IsAuthenticated,IsCompany,IsAdmin,)

    def get(self, request,company_id):

        data = request.data
        verify = request.GET["verify"]
        verify = True if verify == "true" else False
        company_ins = Company.objects.get(id=company_id)
        company_ins.is_verified = verify
        company_ins.save()

        data = {}
        data["email"] = company_ins.user.email
        print("Ang response data")
        if verify:
            email_ins = Email()
            c_task.delay(email_ins.verification_business_success, data)


        return Response("Company status has been updated.", status=status.HTTP_200_OK)

1 Ответ

1 голос
/ 16 марта 2019

Обычно при сбое проверки разрешений возвращается «403 Forbidden» или «401 Unauthorized». Тогда в этом случае вы должны проверить

  • Запрос не был успешным, 403 будет. вернуть. В этом случае проверьте Token пользователя
  • Запрос был выполнен успешно, но разрешение было отклонено.403 будет возвращено В этом случае вам следует проверить, предоставил ли пользователь список permissions, который вы упомянули в классах разрешений

подробнее о разрешениях

Пример, Скажем, если пользователь Джон и вы установили разрешения в виде как показано ниже

permission_classes = (IsAuthenticated,IsCompany,IsAdmin,)

тогда john должен быть пользователем типа компании и администратором

...