Django2.1 사용자 인증
Django 인증 시스템은 인증과 인증을 동시에 처리합니다.
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'
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.