django 중급---사용자 인증

2177 단어
설명
django는 User,auth 방법을 제공하여 사용자 로그인 인증, 권한 관리 등 기능을 실현한다.
1: 사용자 인증
사용자가 로그인하여 사용자 이름과 비밀번호가 정확한지 판단하고 이 계정이 잠겼는지 판단한다.
#coding=utf8
from django.shortcuts import render_to_response,redirect
from django.template import RequestContext
from django.contrib import auth
from django.contrib.auth.decorators import login_required

def Login(request):
    if request.method == "GET":
        return render_to_response("login.html",context_instance=RequestContext(request))
    else:
        username = request.POST.get('username',None)
        password = request.POST.get('password',None)
        userinfo = auth.authenticate(username=username,password=password)
        if userinfo:
            if userinfo.is_active:
                auth.login(request,userinfo)
                return redirect('/')
        return render_to_response("login.html",{"errmsg":"        "},context_instance=RequestContext(request))

@login_required
def Index(request):
    return render_to_response("test.html")

@login_required
def Logout(request):
    auth.logout(request)
    return redirect("/login")

코드 설명:
  • render_to_respinse에서 context 사용instance=RequestContext(request), django post가 제출할 때 크로스 도메인에서 csrf 검증을 요청하는 것을 방지하고 이 문제를 해결하는 방법
  • 전단form표에 추가
  • {% csrf_token %}
  • 보기 함수에 RequestContext
  • 사용
     return render_to_response("login.html",context_instance=RequestContext(request))
    
  • auth.authenticate 방법은 입력한 폼의 사용자와 비밀번호가 정확한지 확인하기 위해, 정확하지 않으면 사용자 대상을 되돌려주고, 정확하지 않으면 None
  • 을 되돌려줍니다
  • is_active 사용자 계정이 잠겼는지 판단, 사용자가 만들 때 데이터 테이블 필드 isactive, 기본값은 True, True:1, False:0
  • auth.login,django 로그인 사용자, 사용자 대상을 전송해야 합니다. 기본적으로 사용자 id를session
  • 에 씁니다.
  • auth.logout,django에서 사용자를 로그아웃합니다. 사용자가 로그인하지 않으면 이 방법을 사용하면 오류가 발생하지 않습니다
  • login_required 장식기, 사용자의 로그인 여부를 판단하고 로그인이 없으면 로그인 페이지로 이동합니다.django의 기본 로그인 페이지는 "accounts/login/"이며 이 주소를 사용자 정의합니다:
  • # setting.py   
    LOGIN_URL = "/login"
    

    좋은 웹페이지 즐겨찾기