尝试将某些信息发布到DRF API,但使用Python请求遇到403禁止错误

stackoverflow1234

我正在尝试获取对我的DRF API的访问权限,并且尝试对我的API进行身份验证,但是由于在收到禁止访问之前未收到403 HTTP错误(未设置CSRF cookie),因此无法发布用户名/密码(数据)。错误,然后我将视图更改为基于DRF类的视图,现在我陷入了该错误,无法将任何内容发布到我的API

请求(在Django项目之外)

payload = {'username': 'user', 'password': '****'}

r = requests.get('http://website/api/login/', data=payload) 

网址

app_name = 'api'
urlpatterns = [
    url(r'^login/$', views.login_to_api.as_view(), name = "login_to_api"),

观看次数

class CustomerListAPIView(generics.ListAPIView):
    queryset = Customer.objects.all()
    serializer_class = CustomerSerializer

class CustomerRetrieveAPIView(generics.RetrieveAPIView):
    queryset = Customer.objects.all()
    serializer_class = CustomerSerializer

class login_to_api(APIView):

    def post(self, request):
        if request.method == "POST":
            (logic)

的HTML

<form id="login-form" method="post" action="{% url 'api:login_to_api' %}" >
            {% csrf_token %}
            <table class="table">
                <tr>
                    <td><label >Username</label></td>
                    <td><input id="username" name="username" type="text" class="form-control"></td>
                </tr>
                <tr>
                    <td><label >Password</label></td>
                    <td><input id="password" name="password" type="password" class="form-control"></td>
                </tr>
            {%csrf_token%}
            </table>

            <input type="submit" value="Login" class="btn btn-primary pull-right" />

设定


REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.BasicAuthentication',
        #'rest_framework.authentication.SessionAuthentication',
    )#,'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions.IsAuthenticated', )
}



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

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

任何帮助将不胜感激

stackoverflow1234

我修复它的方法是从设置中删除is_authenticated


REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (

        'rest_framework.authentication.SessionAuthentication',
    ),
}

然后在permission_classes = (IsAuthenticated,)除了登录视图之外的每个基于分类的视图中放置的视图中,这样我就可以将凭据发布到该视图中进行登录,并在我的请求逻辑中创建一个会话,然后转到登录视图,然后再请求其他任何视图需要的意见

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

尝试连接到本地主机时遇到涉及CSRF的403错误(Python请求)

在DRF api上使用axios响应请求将引发错误(禁止设置CSRF cookie)。

为什么我会收到404尝试将大型文件发布到Core Web API的信息

(400)尝试将简单值发布到API时出现错误请求

尝试从Pod访问Kubernetes API时出现403禁止错误

尝试将消息发布到SQS时访问拒绝错误

使用Python请求模块将文件发布到API

使用 Python 请求将数据发布到 REST API

基本的ajax,尝试将数据发布到本地api文件

尝试使用Ajax将嵌套数组发布到php

使用python请求库将文件发布到服务器时出现错误的请求错误

尝试将新问题发布到GitHub存储库时出现错误“ 400错误的请求”

将参数发布到 api 主体返回错误 403

使用Facebook Graph API时遇到错误-会话:尝试为具有待处理请求的会话请求新权限

Spotify api axios反应发布请求403错误

尝试将构建触发器发布到 perforce 时,如何缓解此“错误 403 请求中未包含有效碎屑”

将SSL请求从Apache服务器转发到Tomcat时出现403(禁止)错误

尝试向pypi api发出请求时出现403错误

尝试使用 ErrorDocument 处理请求时遇到 404 Not Found 错误

如何使用jquery,javascript,ajax将模式信息发布到api

尝试发布到GooglePlay appStore会出现错误403

尝试使用Request NPM将数据从NodeJS发布到本地主机(Loopback Swagger API)

Ajax发布仅针对某些用户请求403错误?

如何使用请求模块使用Python将JSON文件的内容发布到RESTFUL API

通过REST API的Sharepoint 2013:尝试创建项目时禁止出现错误403

Microsoft Graph API:尝试在租户上检索策略时出现403禁止错误

Gremlin到AWS Neptune的403禁止错误

ioctl返回ENOENT,尝试将URB请求发布到Isoc设备端点(从android的JNI访问)

无法使用Jenkins将构建信息发布到IBM devOps Insights