禁用所有身份验证Django



我在django中写了一个API,并带有cookie和sessionid的身份验证。

现在,我想通过任何形式的身份验证添加终点,但我无法访问端点。

我做了什么:

URL:

 url(r'^api/public_end_point/?$', csrf_exempt(views.publicEndPoint.as_view()), name='public_end_point')

视图:

class publicEndPoint(APIView):
    @api_view(['POST'])
    @permission_classes([permissions.AllowAny,])
    def post(self, request, *args, **kwargs):

        return Response({"success": True, "content": "Hello World!"})

关于我在这里缺少什么的一些想法?

谢谢

编辑

设置:

MIDDLEWARE_CLASSES = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    # MY MIDDLEWARE #
    'config.middleware.EnforceLoginMiddleware',
    'config.middleware.AuditMiddleware',
    'config.middleware.ExceptionMiddleware',
]
REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    ),
    'DEFAULT_FILTER_BACKENDS': ('rest_framework.filters.DjangoFilterBackend',),
    'PAGE_SIZE': 20
}
[15/Feb/2017 15:57:16] "POST /api/public_end_point HTTP/1.1" 302 0
[15/Feb/2017 15:57:16] "GET /sign/base.html?nu=/api/public_end_point HTTP/1.1" 200 2906

只需将PERMISSION_CLASSES = (,)作为类变量添加到视图中,您不需要使用装饰器。

仅出于信息目的 - 默认情况下DJANGO REST框架使用BasicAuthenticationSessionAuthentication,以便您需要登录或提供基本的身份验证凭证才能访问API。

如果您需要自己的自定义令牌身份验证,则需要在DRF设置中覆盖AUTHENTICATION_CLASSES

REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
    'rest_framework.authentication.BasicAuthentication',
    'rest_framework.authentication.SessionAuthentication',
     # add your own authentication class   
    )
}

相关内容

  • 没有找到相关文章

最新更新