django 자체 auth 모듈 소기
>>> from django.contrib.auth.models import User
>>> user = User.objects.create_user(username='john',
... email='[email protected]',
... password='glass onion')
암호 수정
>>> user = User.objects.get(username='john')
>>> user.set_password('goo goo goo joob')
>>> user.save()
User 속성
username
30자 이상이어야 합니다.영숫자 문자(문자, 숫자 및 밑줄)만 사용합니다.
first_name
선택 사항,30자 이하입니다.
last_name
선택 사항,30자 이하입니다.
선택할 수 있습니다.우편 주소.
password
필요했어암호의 해시 값(Django는 원래 암호를 저장하지 않습니다).See the Passwords section for more about this value.
is_staff
부울 값.사용자가 사이트의 관리 권한을 가지고 있는지 여부.
is_active
부울 값.이 계정이 로그인할 수 있는지 설정합니다.계정을 직접 삭제하는 대신 이 로고의 위치를 False로 지정합니다.
is_superuser
부울 값은 사용자가 모든 권한을 가지고 있는지 여부를 표시하며, 명시적으로 권한 분배 정의를 필요로 하지 않습니다.
date_joined
계정이 만들어진 날짜와 시간은 계정이 만들어졌을 때 기본적으로 현재 날짜/시간으로 설정됩니다.
last_login
사용자가 마지막으로 로그인한 날짜입니다.기본적으로 현재 날짜/시간으로 설정됩니다.
User 메서드
메서드
묘사
is_authenticated()
실제 User 객체의 경우 항상 반환
True
됩니다.이것은 사용자가 이미 검증되었는지 아닌지를 분별하는 방법이다.그것은 어떠한 권한도 의미하지 않으며, 사용자가 여전히 활동하는지 확인하지 않는다.이것은 단지 이 사용자가 이미 성공적으로 검증되었다는 것을 설명할 뿐이다.get_full_name()
되돌아오기
first_name
에 last_name
를 더하고 중간에 빈칸을 삽입합니다.set_password(passwd)
사용자 암호를 지정한 문자열로 설정합니다.실제로 저장
User
대상은 없다.check_password(passwd)
지정한 문자열이 사용자 암호와 일치하면
True
되돌아옵니다.비교할 때 암호 해시표를 사용합니다.get_group_permissions()
사용자가 소속 그룹을 통해 얻은 권한 문자열 목록을 되돌려줍니다.
get_all_permissions()
사용자가 속한 그룹과 자신의 권한을 통해 얻은 권한 문자열 목록을 되돌려줍니다.
has_perm(perm)
사용자가 지정한 권한이 있으면 되돌아오기
True
, 이때 perm
의 형식은 "package.codename"
이다.사용자가 비활성 상태이면 이 메서드는 항상 반환됩니다False
.로그인 및 퇴장
Django는 로그인과 종료를 처리하는 데 내장된 보기 (view) 함수를 제공합니다. 그러나 시작하기 전에 수동으로 로그인하고 종료하는 방법을 봅시다.Django는 django를 실행하기 위해 두 개의 함수를 제공합니다.contrib.auth\의 작업: authenticate() 및 login().
인증된 사용자 이름과 비밀번호는 authenticate () 함수를 사용합니다.이것은 사용자 이름username과 비밀번호password 두 개의 매개 변수를 받아들이고, 주어진 사용자 이름이 합법적인 상황에서 User 대상을 되돌려줍니다.암호가 올바르지 않으면 authenticate()가 None으로 돌아갑니다.
>>> from django.contrib import auth
>>> user = auth.authenticate(username='john', password='secret')
>>> if user is not None:
... print "Correct!"
... else:
... print "Invalid password."
authenticate () 는 사용자의 인증서를 검증할 뿐입니다.한 사용자에게 로그인하려면login () 을 사용하십시오.이 함수는 HttpRequest 개체와 User 개체를 매개 변수로 받아들여 Django의 세션 (session) 프레임워크를 사용하여 사용자의 ID를 세션에 저장합니다.
다음 예에서는 한 뷰에서 authenticate ()와 login () 함수를 모두 사용하는 방법을 보여 줍니다.
상륙하다.
from django.contrib import auth
def login_view(request):
username = request.POST.get('username', '')
password = request.POST.get('password', '')
user = auth.authenticate(username=username, password=password)
if user is not None and user.is_active:
# Correct password, and the user is marked "active"
auth.login(request, user)
# Redirect to a success page.
return HttpResponseRedirect("/account/loggedin/")
else:
# Show an error page
return HttpResponseRedirect("/account/invalid/")
게재하다
from django.contrib import auth
def logout_view(request):
auth.logout(request)
# Redirect to a success page.
return HttpResponseRedirect("/account/loggedout/")
HttpRequest 객체를 수락하고 값을 반환하지 않습니다.
사용자가 로그인하지 않아도 logout () 는 이상을 던지지 않습니다.
로그인한 사용자의 액세스 제한
from django.http import HttpResponseRedirect
def my_view(request):
if not request.user.is_authenticated():
return HttpResponseRedirect('/accounts/login/?next=%s' % request.path)
# ...
login 도 사용 가능required 수정자
from django.contrib.auth.decorators import login_required
@login_required
def my_view(request):
# ...
login_required는 다음과 같은 일을 합니다.
다른 권한에 대한 액세스 제한
제한 접근은 특정한 권한을 바탕으로 할 수 있으며, 일부 검사나login 보기에 서로 다른 위치를 제공할 수 있으며, 이러한 실현 방식은 대체로 같다.
일반적인 방법은 바로 보기의 Request입니다.사용자에서 검사를 실행합니다.예를 들어 다음 보기에서 사용자가 로그인하고 폴스가 있는지 확인합니다.can_vote 권한:
def vote(request):
if request.user.is_authenticated() and request.user.has_perm('polls.can_vote')):
# vote here
else:
return HttpResponse("You can't vote in this poll.")
그리고 Django는 user 라고 있어요.passes_테스트의 간결한 방식.매개 변수를 받아들여 지정한 상황에 장식기를 생성합니다.
def user_can_vote(user):
return user.is_authenticated() and user.has_perm("polls.can_vote")
@user_passes_test(user_can_vote, login_url="/login/")
def vote(request):
# Code here can assume a logged-in user with the correct permission.
...
user_passes_테스트에서 필요한 매개 변수를 사용합니다. User 대상이 존재하고 사용자가 이 페이지를 볼 수 있을 때 True로 돌아가는 호출 가능한 방법입니다.주의 userpasses_테스트는 User의 인증 여부를 자동으로 검사하지 않습니다. 스스로 이 일을 해야 합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.