05. Django- 사용자 인증
Django
내장auth
모듈은 사용자가 등록, 로그인, 로그아웃, 비밀번호 수정 등의 기능을 실현하고 개발자가 많은 시간을 절약할 수 있도록 도와준다.인증용 데이터 테이블
auth_user
auth
모듈에서 사용자 정보를 유지하는 관계 모델(계승models.Model
이고 데이터베이스에서 이 표는 auth_user
auth_group
auth_user_user_permissions
user.user_permissions
를 통해 데이터베이스에서auth_user_user_permissions
데이터 테이블에서 유지보수한다.auth_user_groups
groups
라는 다중 필드가 있고 다중 관계는 auth_user_groups
데이터 테이블에서 유지된다.Group 객체는 사용자 그룹의 사용자를 역조회user_set
할 수 있습니다.auth_group_permissions
auth_permission
django.contrib.auth
모듈사용
Django
자체 인증 기능을 사용하려면 먼저 auth
모듈을 가져와야 합니다.from django.contrib import auth
auth
제공 방법authentioate()
사용자 인증, 즉 사용자 이름과 비밀번호가 정확한지 검증하는 데 일반적으로
username
와 password
두 개의 키워드 파라미터가 필요하다.인증을 통과하면
authentioate()
함수는 User
대상을 되돌려줍니다.authentioate()
함수는 User
대상에 속성 표지를 설정하는데 이 속성 표지는 데이터베이스에서 사용자 이름과 비밀번호를 검증한다.데이터베이스에서 거치지 않은
authentioate()
대상을 직접 꺼내려고 시도할 때 오류가 발생합니다.User
login(request)
대상과 HttpRequest
함수 인증을 통과한 User 대상을 수신한다.사용자 로그인 기능을 실현하면 백엔드에서 로그인 사용자를 위해
authentioate()
데이터를 생성한다.session
방법을 실행한 사용자 대상은 login()
를 통해 현재 로그인한 사용자 대상을 얻을 수 있고 사용자의 관련 정보를 추출할 수 있다. 그렇지 않으면 익명의 사용자 대상request.user
을 얻을 수 있다.AnonymounsUser Object
logout(request)
대상을 받고 반환값이 없음;함수를 호출할 때 현재 요청한session 정보를 모두 삭제합니다.
현재 사용자가 로그인하지 않아도 이 함수를 호출하면 오류가 발생하지 않습니다.
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이다.이 방법은 두 개의 필요한 매개 변수를 수신하는 슈퍼 사용자를 만드는 데 사용됩니다.효과는 집행
User
과 같다.일반적인 경우
username、password
방법은 매우 드물고 가장 자주 사용하는 방법python manage.py createsuperuser
은 일반 사용자를 만들어서 가입 보기에 자주 적용할 것이다.사용자를 만드는 데 필요한 필드는
create_superuser()
데이터 테이블의 필드와 대응해야 합니다.이 방법은 비밀번호를 수정하는 데 사용되며 새 비밀번호를 매개 변수로 수신하고 마지막에 반드시
create_user()
방법으로 저장해야 한다. 그렇지 않으면 무효다.로그인 사용자의 비밀번호가 정확한지 확인하려면 현재 요청한 사용자의 비밀번호가 필요합니다.
암호가 True로 올바르게 반환되지 않으면 False가 반환됩니다.
User 객체 속성
사용자가 사이트의 관리 권한을 가지고 있는지 판단하다
사용자의 로그인을 허용할지 여부를 판단하다.
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
에 보고한다.이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.