05. Django- 사용자 인증

5153 단어
Django 내장형 사용자 인증Django 내장auth 모듈은 사용자가 등록, 로그인, 로그아웃, 비밀번호 수정 등의 기능을 실현하고 개발자가 많은 시간을 절약할 수 있도록 도와준다.
인증용 데이터 테이블
  • auth_user
  • User는 auth 모듈에서 사용자 정보를 유지하는 관계 모델(계승models.Model이고 데이터베이스에서 이 표는 auth_user
  • 로 명명되었다
  • auth_group
  • auth_user_user_permissions
  • User와 Permission은 다중 필드user.user_permissions를 통해 데이터베이스에서auth_user_user_permissions 데이터 테이블에서 유지보수한다.

  • auth_user_groups
  • User 대상에는 groups라는 다중 필드가 있고 다중 관계는 auth_user_groups 데이터 테이블에서 유지된다.Group 객체는 사용자 그룹의 사용자를 역조회user_set할 수 있습니다.

  • auth_group_permissions
  • auth_permission
  • django.contrib.auth 모듈
    사용Django 자체 인증 기능을 사용하려면 먼저 auth 모듈을 가져와야 합니다.
    from django.contrib import auth
    
    auth 제공 방법
  • authentioate()
    사용자 인증, 즉 사용자 이름과 비밀번호가 정확한지 검증하는 데 일반적으로 usernamepassword 두 개의 키워드 파라미터가 필요하다.
    인증을 통과하면 authentioate() 함수는 User 대상을 되돌려줍니다.authentioate() 함수는 User 대상에 속성 표지를 설정하는데 이 속성 표지는 데이터베이스에서 사용자 이름과 비밀번호를 검증한다.
    데이터베이스에서 거치지 않은 authentioate() 대상을 직접 꺼내려고 시도할 때 오류가 발생합니다.
  • User login(request) 대상과 HttpRequest 함수 인증을 통과한 User 대상을 수신한다.
    사용자 로그인 기능을 실현하면 백엔드에서 로그인 사용자를 위해authentioate() 데이터를 생성한다.session 방법을 실행한 사용자 대상은 login()를 통해 현재 로그인한 사용자 대상을 얻을 수 있고 사용자의 관련 정보를 추출할 수 있다. 그렇지 않으면 익명의 사용자 대상request.user을 얻을 수 있다.
  • AnonymounsUser Object logout(request) 대상을 받고 반환값이 없음;
    함수를 호출할 때 현재 요청한session 정보를 모두 삭제합니다.
    현재 사용자가 로그인하지 않아도 이 함수를 호출하면 오류가 발생하지 않습니다.
  • login_required() HttpRequest 모듈에서 제공하는 장식기 도구로 특정한 보기에 로그인 검사를 간편하게 추가할 수 있다.
    사용자가 로그인하지 않으면 기본적으로 auth로 이동하여 현재 접근accounts/login/의 절대 경로를 전달합니다.
    사용자 정의 점프 경로, url에 추가: LOGINURL = '/login/'
    from django.contrib.auth.decorators import login_required
    
    @login_required
    def home(request):
     pass
    

  • settings.py 대상의 방법
  • User
    사용자가 인증을 통과했는지 확인하기;is_authentioated() 함수를 통해 되돌아오는 진실auth 대상이라면 되돌아오는 값은True이다.
  • create_superuser()
    이 방법은 두 개의 필요한 매개 변수를 수신하는 슈퍼 사용자를 만드는 데 사용됩니다.효과는 집행User과 같다.
  • create_user()
    일반적인 경우username、password 방법은 매우 드물고 가장 자주 사용하는 방법python manage.py createsuperuser은 일반 사용자를 만들어서 가입 보기에 자주 적용할 것이다.
    사용자를 만드는 데 필요한 필드는 create_superuser() 데이터 테이블의 필드와 대응해야 합니다.
  • set_password[password]
    이 방법은 비밀번호를 수정하는 데 사용되며 새 비밀번호를 매개 변수로 수신하고 마지막에 반드시 create_user() 방법으로 저장해야 한다. 그렇지 않으면 무효다.
  • check_password[password]
    로그인 사용자의 비밀번호가 정확한지 확인하려면 현재 요청한 사용자의 비밀번호가 필요합니다.
    암호가 True로 올바르게 반환되지 않으면 False가 반환됩니다.

  • User 객체 속성
  • is_staff
    사용자가 사이트의 관리 권한을 가지고 있는지 판단하다
  • is_active
    사용자의 로그인을 허용할지 여부를 판단하다.
    False로 설정하면 사용자를 삭제하지 않고도 로그인을 금지할 수 있습니다.
  • auth_user 모듈 확장save() 템플릿에 auth 데이터 테이블 필드가 고정되어 있기 때문에 auth 모듈을 사용하고 추가 필드를 추가하려면 확장이 필요합니다.
    확장 방법:
  • 모델에 표를 추가하여 auth_user표와 일대일 관련
  • 계승 내장auth류: 상용
  • 모델auth_user에서 새 클래스를 만들었습니다. 계승자AbstractUser:
    from django.contrib.auth.models import User, AbstractUser   #    AbstractUser  
    
    class UserInfo(AbstractUser):
        """
           AbstractUser
            :phone、addr
        """
        phone = models.CharField(max_length=11, verbose_name='    ')
        addr = models.CharField(max_length=128, verbose_name='    ')
    
  • 구성models.py새로 추가된 클래스 계승AbstractUser은 확장 후 settings.py표를 덮어쓰기 때문에 기본 인증이 어떤 표 인증을 사용해야 하는지 설정하는 것이 필요합니다.
    # settings.py
    #          
    AUTH_USER_MODEL = 'app .     '
    
    AUTH_USER_MODEL = 'app.UserInfo'    #   
    
  • 이동 데이터 시트
    python manage.py makemigrations
    python manage.py migrate
    
  • 사용자 생성AbstractUser모듈을 확장한 후 사용한 것은 원래auth_user표가 아니라 새 표settings표이기 때문에 사용자를 만들 때 주의해야 한다.
    #     
    from django.contrib.auth.models import User
    user_obj = User.objects.create_user(username='lila', password='1234')
    
    #     
    from app.models import UserInfo
    user_obj = UserInfo.objects.create_user(username='lila', password='1234')
    
  • 모델을 이전하고 auth 모듈을 확장했을 때 auth_user 폴더에 있는 파일(예를 들어 app.UserInfo을 삭제해야 한다. 그렇지 않으면 auth에 보고한다.
  • 이동 모형이 없으면 정상적으로 집행하면 된다.

  • 좋은 웹페이지 즐겨찾기