zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    从美国单身男女的分布图说起纵论视觉化叙述
    职场笔记[0702]:用户体验和创业
    写《回国驯火记》的那个安普若
    《成长比成功更重要》的得失之间[Updated]
    什么时候你可以创业?
    技术英雄会【二】:问CSDN一个信息过滤器的问题
    技术英雄会【四】:也谈如何发掘到需要的内容和英雄
    技术英雄会【新闻】新浪/网易新闻:CSDN最有价值博客TOP10颁奖【图】
    技术英雄会【一】:问周鸿祎一个问题
    自然语言处理能够把全网内容组织到什么程度?
  • 原文地址:https://www.cnblogs.com/lazyball/p/7986094.html
Copyright © 2011-2022 走看看