Mam zestaw uprawnień zestawu ListView do IsAuthenticated, ale po kliknięciu adresu URL w oknie Incognito. Mogę wyświetlić dane. Chociaż kiedy ustawiam uprawnienia do IsAdmin, działa to doskonale, pokazując mi błąd. Oto moja serializerDRF IsAuthenticated nie działa
class BlogListSerializer(ModelSerializer):
url = HyperlinkedIdentityField(
view_name="blog_api:post_detail",
lookup_field="slug"
)
class Meta:
model = Blog
fields = [
'url',
'title',
'category',
'date',
'publish',
'draft'
]
Poniżej jest mój widok
from rest_framework.permissions import IsAuthenticated
class BlogListAPIView(ListAPIView):
queryset = Blog.objects.filter(publish=True, draft=False)
serializer_class = BlogListSerializer
permission_classes = [IsAuthenticated]
Ustawienia plików
ustawieniaREST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
),
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.BasicAuthentication',
'rest_framework.authentication.SessionAuthentication',
)
}
Middleware
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',
]
Kiedy próbuję uzyskać dostęp użytkownikowi przez cal ling get_object na BlogListAPIView, zgłasza błąd nie jest serializowany JSON. Z jakiegoś powodu oprogramowanie pośredniczące przyjmuje AnonymousUser jako użytkownik. Jeśli zalogowany jest AnonymousUser, nie uda się uzyskać pozwolenia IsAuthenticated. Tak się właśnie dzieje (chyba). Ale nie mogę wylogować się z AnonymousUser. Dlaczego AnonymousUser uzyskuje dostęp i jak się go wylogować?
Proszę się upewnić, że pytanie jest jasne. Twierdzisz, że "działa doskonale", więc jaki jest faktyczny problem? – Linovia
czy zdefiniowałeś DEFAULT_AUTHENTICATION_CLASSES & DEFAULT_PERMISSION_CLASSES w settings.py? czy możesz umieścić te wartości tutaj? –
@Linovia Działa to doskonale dla IsAdmin Permission. –