Django2.1 사용자 인증

3580 단어
공식 문서
Django 인증 시스템은 인증과 인증을 동시에 처리합니다.
Django 인증 시스템에 포함된 응용 프로그램 및 중간부품:
  • 응용
  • 'django.contrib.auth'는 인증 프레임워크의 핵심과 기본 모델을 포함합니다.
  • 'django.contrib.콘텐츠 types' 은 Django 내용 형식의 시스템으로 사용자가 만든 모델과 연결할 수 있습니다.
  • 중간부품
  • SessionMiddleware 요청된 세션을 관리합니다.
  • AuthenticationMiddleware   세션을 사용하여 사용자와 요청을 연결합니다.

  • 일반 사용자 만들기
    >>> from django.contrib.auth.models import User
    >>> user = User.objects.create_user('john', '[email protected]', 'johnpassword')

    수퍼유저 만들기
    $ python manage.py createsuperuser --username=joe [email protected]

    암호 변경
    >>> from django.contrib.auth.models import User
    >>> u = User.objects.get(username='john')
    >>> u.set_password('new password')
    >>> u.save()

    사용자 확인authenticate (request=None, **credentials)
    from django.contrib.auth import authenticate
    user = authenticate(username='john', password='secret')
    if user is not None:
        # A backend authenticated the credentials
    else:
        # No backend authenticated the credentials

    방법은 Request의 선택할 수 있는 매개 변수가 있습니다.
    권한 및 인증
    관리자 권한: 추가, 수정, 삭제.
    기본 사용 권한
    django가 설치되어 있으면contrib.auth 응용 프로그램, 설치된 응용 프로그램마다 세 개의 기본 허가가 있습니다. 추가, 수정, 삭제입니다.
    실행 관리자.py migrate 시 관리자가 모델에 대한 기본 권한을 생성합니다. 기존 모델과 새로운 모델을 포함합니다.
    웹 요청 인증
    Django는 세션 및 중간부품을 사용하여 인증 시스템을 요청 객체에 연결합니다.
    사용자가 로그인했을 때, 모든 Request는 현재 사용자의 사용자 속성을 포함합니다.사용자가 로그인하지 않으면 이 속성은 익명 사용자의 실례로 설정됩니다. 그렇지 않으면 사용자의 실례가 됩니다.
    if request.user.is_authenticated:
        # Do something for authenticated users.
    else:
        # Do something for anonymous users.
    

    사용자 로그인login (request, user, backend=None)
    login 방법으로 로그인하면user id가session에 추가됩니다.
    사용자가 로그인한 후 익명 세션 중의 모든 데이터 집합은 세션에 유지됩니다.
    authenticate와login은 일반적으로 함께 사용됩니다.
    from django.contrib.auth import authenticate, login
    
    def my_view(request):
        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(request, username=username, password=password)
        if user is not None:
            login(request, user)
            # Redirect to a success page.
        else:
            # Return an 'invalid login' error message.
    

    사용자 로그아웃logout (request)
    사용자가 로그인하지 않으면logout에서 어떠한 오류도 발생하지 않을 것입니다.
    from django.contrib.auth import logout
    
    def logout_view(request):
        logout(request)
        # Redirect to a success page.

    logout을 호출하면 현재 요청한session 데이터가 완전히 삭제됩니다. 이것은 다른 사람이 같은 웹 브라우저로 이전 사용자의 세션 데이터를 로그인하고 접근하는 것을 방지하기 위해서입니다.session에 데이터를 추가하려면logout을 호출한 후에 조작하십시오.login_required장식기login_required (redirect_field_name='next', login_url=None)
    django에서 REDIRECTFIELD_NAME의 기본값은'next'입니다.
    from django.contrib.auth.decorators import login_required
    
    @login_required(login_url='/accounts/login/')
    def my_view(request):
        ...

    역할: 사용자가 로그인하지 않으면login URL로 바꿀 수 있으며, 로그인했다면 보기 코드는 사용자가 로그인했다고 자유롭게 가정할 수 있습니다.
    클래스 기반 뷰를 사용할 경우 LoginRequiredMixin loginrequired 장식기 같은 작용.
    from django.contrib.auth.mixins import LoginRequiredMixin
    
    class MyView(LoginRequiredMixin, View):
        login_url = '/login/'
        redirect_field_name = 'redirect_to'

    좋은 웹페이지 즐겨찾기