Django 认证系统

实现认证系统的两种方法概述

1. 使用cookie和session的步骤

简要 步骤:

1.设置session
requset.session['自定义一个名字']=2.获取session值
request.session.get('自定义的名字')
3.清空session
request.session.flush()
4.存储session的数据表
django_session

举例说明:

def login(requset):
    if requset.method=='POST':
        username=requset.POST.get('username')
        password=requset.POST.get('password')
        ret=models.User.objects.filter(username=username,password=password)#如果不匹配 就是一个空的queryset集合
        if ret:
            requset.session['is_login_egon']=True #设置settion
            requset.session['username']=username #为了在index的页面 渲染用户名
            return redirect('/index/')
        else:
            return redirect('/login/')
    return render(requset,'login.html')
def index(request):
    #取值session 做判断
    if not request.session.get('is_login_egon'):
        return  redirect('/login/')
    name=request.session.get('username')
    return render(request,'index.html',locals()) #这个locals()感觉就是有啥值都返回
def logout(request):
    request.session.flush() #原理就是根据sessionkey 然后删除整条session记录
    return redirect('/login/')

2.使用auth模块的步骤

简要步骤:

使用django自带的auth_user表
导入:
        from django.contrib import auth
        from django.contrib.auth.models import User 
    auth.authenticate()做验证
        auth.authenticate(username=username,password=password)
    设置session
        auth.login(requset,user) #第二个参数是 当前的登录对象  也就是上边验证的user这个对象
    判断session
        if not request.user.is_authenticated():
    删除session
        auth.logout(request)

    创建超级用户
    >python manage.py createsuperuser
    #
    User.objects.create_user(username=username,password=password)
    User.objects.create_superuser(username=username,password=password)

举例说明:

from django.contrib import auth
from django.contrib.auth.models import User
def login(requset):
    if requset.method=='POST':
        username = requset.POST.get('username')
        password=requset.POST.get('password')
        #有 返回对象;无 返回空
        user=auth.authenticate(username=username,password=password)
        if user:
            #当用户登录成功后 就该记录cookie session了
            #设置session
            auth.login(requset,user) #第二个参数是 当前的登录对象  也就是上边验证的user这个对象
            return redirect('/index/')
            pass
        else:
            return redirect('/login/')
    return render(requset,'login.html')
def index(request):
    #验证是否有了session 返回布尔值
    if not request.user.is_authenticated():
        return redirect('/login/')
    return render(request,'index.html')

def logout(request):
    auth.logout(request)
    return redirect('/login/')

实现认证系统的两种方法详解

http://www.cnblogs.com/lazyball/p/7986132.html

原文地址:https://www.cnblogs.com/lazyball/p/7986094.html