1

웹 사이트에 로그인 한 사용자 만 리소스를 볼 수있는 섹션이 있습니다.Django - 로그인 한 사용자의 레코드를 삭제하거나 편집하는 연습 및 가장 안전한 방법은 무엇입니까?

또한 권한이 부여 된 사용자 만 자신의 레코드를 수정하고 삭제할 수 있음을 확실히하고 싶습니다. 장고에서 이것을 구현하는 가장 좋은 방법과 더 안전한 방법은 무엇입니까?

실제 사례를 진심으로 감사드립니다.

#decorator.py 
from django.http import HttpResponseRedirect 
from django.core.urlresolvers import reverse 

def same_user_required(func): 
    def wrapper(request, user): 
     if not request.user.is_authenticated(): 
      return HttpResponseRedirect(reverse('login-view')) 
     if not user == request.user.username: 
      return HttpResponseRedirect(reverse('login-view')) 
     return func(request, user) 
    return wrapper 

그런 다음 확인 필요한 모든 뷰에 추가 : 내 프로젝트에 대한

+0

그 무엇보다 "사용자가 로그인했습니다"및 "삭제가 영원히 계속됩니다"확인 하시겠습니까? 삭제하려는 항목을 삭제 해주십시오. 방해가되지 않도록하십시오. –

+0

다른 사용자가 ' 그들의 기록이 아닌 기록을 삭제하는 방법을 찾으십시오. 그래서 벽이 필요하다고 생각하십니까? 사용자가 로그인했는지 확인하는 것입니다. – avatar

+0

다른 사용자가이 로그인을 위장 할 수있는 방법이 없으면 충분합니다. –

답변

3

, 내가 올바른 사용자가 로그인 한 경우에서 점검 Decorator 만들어

#view_profile.py 
from apps.utilities.decorators import same_user_required 

@same_user_required 
def edit_profile(request, user): 

주 나의를 URL은 보기에서 매개 변수의 출처 인 사용자 이름 /profile/edit/<username>을 포함합니다.

또 다른 방법은 장고 내장 장식, user_passes_test은 (그 사용의 예 Django Book Chap 14를보고 사용하는 것입니다. 그런 다음 바로 테스트가 아닌 장식의 상용구 코드를 작성해야합니다.

+0

존 감사합니다! – avatar

+0

@itgorilla, 환영합니다 - 또한 코드 누름을 변경 했으므로 *주의하십시오. 절단/붙여 넣기를 할 때 제대로 다시 들여 쓰지 않았습니다. –

+0

+1 : 짧고 달콤한 해결책 :-) –

관련 문제