Django 认证系统

Posted Lazyball

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于Django 认证系统的主要内容,如果未能解决你的问题,请参考以下文章

django扩展User认证系统

django 认证系统

Django用户认证

django认证系统

django认证系统 Authentication

django 认证系统--2