inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트

Authentication과 Permission

IsAuthorOrReadOnly 퍼미션이 작동이 안되네요

257

준영

작성한 질문수 11

0

views.py

class PostViewSet(ModelViewSet):
    queryset = Post.objects.all()
    serializer_class = PostSerializer
    permission_classess = [IsAuthenticated,IsAuthorOrReadOnly] # login_required

 

permissions.py

class IsAuthorOrReadOnly(permissions.BasePermission):
    #인증이 되어야만 목록조회/포스팅 등록 허용
    def has_permission(self, request, view):
        return request.user and request.user_authenticated

    # 작성자 아니면 조회만 가능, 작성자는 다른 작업도 가능
    def has_object_permission(self, request, view, obj):
        if request.method in permissions.SAFE_METHODS: # SAFE_METHOD는 GET, HEAD 등 조회용 안전한 메소드
            return True

        if request.method == 'DELETE':
            return request.user.is_superuser
           
        return obj.author == request.user

 

다른 유저가 쓴 글도  PATCH 메소드로 수정이 가능한데.. 코드상으론 잘못된부분이 없어보이네요 ㅠ

장고 python react django docker

답변 1

0

이진석

안녕하세요.

오타가 있으십니다. :-)

permission_classess 가 아니라 permission_classes 입니다. 오타로 인해, 퍼미션 설정이 현재 ViewSet에 적용이 되지 않았구요.

추가로 has_permission 로직에서 request.user_authenticated 오타가 있으십니다. 이는 request 객체에 없는 속성이므로 AttributeError 예외가 발생할 수 있습니다. 현재 로그인 유저는 request.user 이며, 현재 유저의 로그인 여부는 유저 객체의 is_authenticated 속성으로 알 수 있습니다. 그러므로 request.user.is_authenticated 로 쓰셔야 합니다.

화이팅입니다. :-)

안녕하세요.

0

51

1

[OneToOne Field Demo] get_user_model() 메서드를 활용해야 하는 이유?

0

275

1

useEffect 훅에서 else 유무에 따른 결과

0

211

1

useAxios 훅의 dependency array 설정

0

245

1

useEffect에서 변수 업데이트 관련 질문

0

382

1

rest_framework.generics.CreateAPIView의 model 속성 유무

0

268

1

bootstrap4

0

471

4

리뉴얼 강의가 오픈이 되면 기존 강의는 더이상 못보는걸까요

1

365

1

admin form에서 앞선 필드 선택 후 다른 필드 select widget 구성하는 방법

0

574

3

useState는 필수일까요?

0

263

1

python manage.py makemigrations instagram 시 created_at default 오류가 발생합니다.

0

600

4

Django allauth를 사용한 소셜 로그인 시 에러

0

655

1

프로젝트명 변경 뒤, 디버그툴바+디버그모드 사용 시 에러

0

556

2

useLocalStorage() 함수 사용여부

0

229

1

django에 LOGIN_URL = '/accounts/login/'의 의미?

0

449

1

리듀서의 의미 재확인

0

430

1

simple-jwt Refresh Token 사용 노하우

0

899

2

docker compose 를 통한 배포 관련 오류 문의

0

673

1

파이썬 속도 장고 관련 궁금한게 있습니다.

0

365

1

is_like_user

0

233

1

related_name 오류

0

275

1

re_path 오류

0

259

1

re_path url

0

251

1

No post matches the given query

0

661

2