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/\')
实现认证系统的两种方法详解
以上是关于Django 认证系统的主要内容,如果未能解决你的问题,请参考以下文章