django 자체 auth 모듈 소기

5430 단어
사용자 작성
>>> 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자 이하입니다.
email
선택할 수 있습니다.우편 주소.
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_namelast_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는 다음과 같은 일을 합니다.
  • 사용자가 로그인하지 않으면/accounts/login/로 다시 지정하고 현재 절대 URL을next로 검색 문자열에 전달합니다. 예를 들어:/accounts/login/?next=/polls/3/.
  • 사용자가 로그인하면 보기 함수를 정상적으로 실행합니다.보기 코드는 사용자가 이미 로그인했다고 가정할 수 있다.

  • 다른 권한에 대한 액세스 제한
    제한 접근은 특정한 권한을 바탕으로 할 수 있으며, 일부 검사나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의 인증 여부를 자동으로 검사하지 않습니다. 스스로 이 일을 해야 합니다.

    좋은 웹페이지 즐겨찾기