2017-02-15 134 views
0

我有一個使用cookie和sessionid進行身份驗證的用Django編寫的API。禁用所有身份驗證Django

現在我想添加一個終端公衆,任何類型的身份驗證,但我不能訪問終點。

我做了什麼:

網址:

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 
+0

當你嘗試時會發生什麼? –

+0

@DanielRoseman我得到一個302-重定向 – 62009030

+0

@DanielRoseman我編輯了我的帖子,更多詳細信息 – 62009030

回答

0

只需添加PERMISSION_CLASSES = (,)到您的視圖類變量,你並不需要使用一個裝飾。

僅供參考 - 默認情況下,Django Rest Framework使用BasicAuthenticationSessionAuthentication,這樣您需要登錄或提供基本身份驗證憑據才能訪問api。

如果您需要自己的自定義令牌認證,則需要在drf設置中覆蓋AUTHENTICATION_CLASSES

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

我想保持我的API原樣,除了這個終點我想公開 – 62009030

+0

檢查我更新的答案 – hspandher

+0

我仍然得到重定向:[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 – 62009030