Django Auth 인증 모듈
1 Auth 모듈은 무엇입니까2 auth 모듈의 일반적인 방법3 기본 auth 확장사용자 테이블디렉토리로 돌아가기
1 Auth 모듈은 무엇입니까?
Auth 모듈은 Django의 사용자 인증 모듈입니다.
우리는 웹 사이트를 개발할 때 웹 사이트를 실현하는 사용자 시스템을 설계하는 것을 피할 수 없다.이때 우리는 사용자 등록, 사용자 로그인, 사용자 인증, 취소, 비밀번호 수정 등 기능을 실현해야 한다. 이것은 정말 번거로운 일이다.
Django는 완벽주의자의 궁극적인 틀로서 당연히 사용자의 이런 문제점을 생각할 것이다.강력한 사용자 인증 시스템 - auth를 내장하고 있으며 기본적으로auth 를 사용합니다사용자 데이터를 저장하는 사용자 테이블입니다.
디렉토리로 돌아가기
2 auth 모듈 공통 방법
from django.contrib import auth
authenticate()
사용자 인증 기능을 제공합니다. 즉, 사용자 이름과 비밀번호가 정확한지 검증하는 것입니다. 일반적으로username,password 두 개의 키워드 파라미터가 필요합니다.
인증에 성공하면 User 객체가 반환됩니다.
authenticate () 는 이 User 대상에 백엔드가 이 사용자를 인증했고 이 정보는 후속 로그인 과정에서 필요합니다.
사용법:
user = authenticate(username='usernamer',password='password')
login(HttpRequest, user)
이 함수는 HttpRequest 객체와 인증된 User 객체를 수락합니다.
이 함수는 사용자가 로그인하는 기능을 실현한다.이것은 본질적으로 백엔드에서 사용자를 위해 관련session 데이터를 생성합니다.
사용법:
from django.contrib.auth import authenticate, login
def my_view(request):
username = request.POST['username']
password = request.POST['password']
user = authenticate(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)
이 함수는 반환 값이 없는 HttpRequest 객체를 받아들입니다.
이 함수를 호출하면 현재 요청한session 정보가 모두 삭제됩니다.이 사용자는 로그인하지 않아도 이 함수를 사용하면 오류가 발생하지 않습니다.
사용법:
from django.contrib.auth import logout
def logout_view(request):
logout(request)
# Redirect to a success page.
is_authenticated()
현재 요청이 인증을 통과했는지 판단하는 데 사용됩니다.
사용법:
def my_view(request):
if not request.user.is_authenticated():
return redirect('%s?next=%s' % (settings.LOGIN_URL, request.path))
login_requierd()
auth에서 제공하는 장식기 도구로 보기에 로그인 검사를 빠르게 추가할 수 있습니다.
사용법:
from django.contrib.auth.decorators import login_required
@login_required
def my_view(request):
...
사용자가 로그인하지 않으면django의 기본 로그인 URL '/accounts/login/' 으로 이동하여 현재 방문한 URL의 절대 경로를 전달합니다. (로그인이 성공하면 이 경로로 다시 지정됩니다.)
사용자 정의 로그인 URL이 필요하면 settings에서 로그인해야 합니다.py 파일에서 LOGIN을 통해URL을 수정합니다.
예:
LOGIN_URL = '/login/' #
create_user()
auth에서 제공하는 새로운 사용자를 만드는 방법은 필요한 인자 (username,password) 등을 제공해야 합니다.
사용법:
from django.contrib.auth.models import User
user = User.objects.create_user(username=' ',password=' ',email=' ',...)
create_superuser()
auth에서 제공하는 새로운 슈퍼 사용자를 만드는 방법은 필요한 인자 (username,password) 등을 제공해야 합니다.
사용법:
from django.contrib.auth.models import User
user = User.objects.create_superuser(username=' ',password=' ',email=' ',...)
check_password(password)
auth에서 제공하는 암호가 정확한지 확인하는 방법은 현재 요청한 사용자의 암호를 제공해야 합니다.
암호가 True로 올바르게 반환되지 않으면 False가 반환됩니다.
사용법:
ok = user.check_password(' ')
set_password(password)
auth에서 제공하는 암호를 수정하는 방법으로 설정할 새 암호를 매개 변수로 수신합니다.
주의: 설정이 완료되면 반드시 사용자 대상을 호출하는save 방법!!!
사용법:
user.set_password(password='')
user.save()
암호 수정의 간단한 예
@login_required
def set_password(request):
user = request.user
err_msg = ''
if request.method == 'POST':
old_password = request.POST.get('old_password', '')
new_password = request.POST.get('new_password', '')
repeat_password = request.POST.get('repeat_password', '')
#
if user.check_password(old_password):
if not new_password:
err_msg = ' '
elif new_password != repeat_password:
err_msg = ' '
else:
user.set_password(new_password)
user.save()
return redirect("/login/")
else:
err_msg = ' '
content = {
'err_msg': err_msg,
}
return render(request, 'set_password.html', content)
User 객체의 속성
User 객체 속성:username,password
is_staff: 사용자가 사이트의 관리 권한을 가지고 있는지 여부.
is_active: 사용자의 로그인을 허용할 지 여부입니다.false로 설정하면 사용자를 삭제하지 않는 전제에서 사용자의 로그인을 금지할 수 있습니다.
디렉토리로 돌아가기
3 기본 auth 확장사용자 테이블
이 내장된 인증 시스템은 이렇게 사용하기 쉽지만auth사용자 테이블 필드는 모두 고정된 몇 개입니다. 프로젝트에서 직접 사용할 수 없습니다.
예를 들어, 나는 사용자의 휴대전화 번호를 저장하는 필드를 추가하고 싶은데, 어떻게 해야 합니까?
똑똑한 당신은 다른 시계를 새로 만들고 일대일과 내장된auth 를 통해사용자 테이블 연결, 이렇게 하면 요구를 충족시킬 수 있지만 더 좋은 실현 방식은 없을까요?
답은 있지.
내장된 AbstractUser 클래스를 계승하여 모델 클래스를 정의할 수 있습니다.
이렇게 하면 프로젝트 수요에 따라 유연하게 사용자 표를 디자인할 수 있을 뿐만 아니라 Django의 강력한 인증 시스템도 사용할 수 있다.
from django.contrib.auth.models import AbstractUser
class UserInfo(AbstractUser):
"""
"""
nid = models.AutoField(primary_key=True)
phone = models.CharField(max_length=11, null=True, unique=True)
def __str__(self):
return self.username
참고:
내장된 auth 를 위의 방식으로 확장합니다.user표 다음에settings에 있어야 합니다.py에서 Django에게 내가 새로 정의한 UserInfo표를 사용하여 사용자 인증을 하고 있다고 알려주었다.쓰기 방법은 다음과 같습니다.
# Django User ,
AUTH_USER_MODEL = "app .UserInfo"
다시 참고:
새 인증 시스템에 사용할 테이블을 지정하면 데이터베이스에 이 테이블을 다시 만들어야 합니다. 기본적인auth 를 계속 사용할 수 없습니다.user표입니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.