当用户通过认证时,set_Cookie(key, value)

request.Cookie.get(key) 如果key不为空,就说明验证通过,否者重新跳转回login登录页面

对于URL

urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^tp1/', views.tp1),
url(r'^user_list', views.user_list),
url(r'^login', views.login),
url(r'^Order/', views.Order.as_view()),
url(r'^index/', views.index)
]

对于views文件

user = {'name':'dacengzi', 'password':123}
def login(request):
if request.method == 'GET': #如果进来的方式是GET,直接跳转
return render(request, 'login.html')
elif request.method == 'POST': #如果是POST,说明用户已经上传
username = request.POST.get('username') #获取用户名
password = int(request.POST.get('password')) #获取密码
current_time = datetime.datetime.utcnow() #当前时间
current_time = current_time + datetime.timedelta(seconds=5) #当前时间推迟5秒 if username == user['name'] and password == user['password']: #如果用户名和密码匹配
req = redirect('/index/') req.set_cookie('correct', username, expires=current_time) #设置Cookie标志位
return req
else:
return render(request, 'login.html')
def auth(func):
def inner(request, *args, **kwargs):
answer = request.COOKIES.get('correct') #接收验证所得的标志位
if not answer: #如果没有收到重新跳转回登录界面
return render(request, 'login.html')
else: # 如果有就执行Order文件
return func(request, *args, **kwargs)
return inner
from django.utils.decorators import method_decorator
from django import views
@method_decorator(auth, name='dispatch') #给dispatch加装饰器,程序一进来就进行验证
class Order(views.View):
def get(self, request):
u = request.COOKIES.get('correct') #获取u,进行传递
return render(request, 'index.html', {'u': u}) def index(request):
return render(request, 'index.html')

对于login文件

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/login/" method="post">
<input type="text" name="username">
<input type="text" name="password">
<input type="submit" value="提交">
</form>
</body>
</html>

Django 实现用户认证set_Cookie的更多相关文章

  1. COOKIE与SESSION、Django的用户认证、From表单

    一.COOKIE 与 SESSION 1.简介 1.cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生. ...

  2. python 全栈开发,Day79(Django的用户认证组件,分页器)

    一.Django的用户认证组件 用户认证 auth模块 在进行用户登陆验证的时候,如果是自己写代码,就必须要先查询数据库,看用户输入的用户名是否存在于数据库中: 如果用户存在于数据库中,然后再验证用户 ...

  3. 深入一下Django的用户认证和cache

    深入一下Django的用户认证和cache 用户认证 首先明白一个概念,http协议是无状态的,也就是每一次交互都是独立的,那如何让服务器和客户端进行有状态的交互呢,现在较为常见的方法就是让客户端在发 ...

  4. Django--分页器(paginator)、Django的用户认证、Django的FORM表单

    分页器(paginator) >>> from django.core.paginator import Paginator >>> objects = ['joh ...

  5. Django自定义用户认证

    自定义一个用户认证 详细参考官方文档: https://docs.djangoproject.com/en/1.9/topics/auth/customizing/#django.contrib.au ...

  6. 【django之用户认证】

    一.auth模块 模块导入 from django.contrib import auth 主要方法如下: 1 .authenticate()    提供了用户认证,即验证用户名以及密码是否正确,一般 ...

  7. CMDB资产管理系统开发【day25】:Django 自定义用户认证

    官方文档:https://docs.djangoproject.com/en/1.10/topics/auth/customizing/#substituting-a-custom-user-mode ...

  8. django - 总结 - 用户认证组件

    用户认证组件 from django.contrib import auth 从auth_user表中获取对象,没有返回None,其中密码为密文,使用了加密算法 user = auth.authent ...

  9. Django组件-用户认证

    用户认证 一.auth模块 from django.contrib import auth django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: 1.1 .authenti ...

随机推荐

  1. Resteasy集成Spring

    很简单,都用最新的版本就可以了.之前在网上找的教程都是用resteasy2.x和spring3集成,但是resteasy2.x和spring4是不行的,弄了很久.最后换成最新的resteasy3.x好 ...

  2. HDU - 6521 Party (SYSU校赛K题)(线段树)

    题目链接 题意:n个人排成一列,一开始他们互不认识,每次选[l,r]上的人开party,使他们互相认识,求出每次party之后新互相认识的人的对数. 思路:把“互相认识”变成单向连边,只考虑左边的人对 ...

  3. BZOJ:5092 [Lydsy1711月赛]分割序列(贪心&高维前缀和)

    Description 对于一个长度为n的非负整数序列b_1,b_2,...,b_n,定义这个序列的能量为:f(b)=max{i=0,1,...,n}((b_1 xor b _2 xor...xor ...

  4. BZOJ4974:[Lydsy1708月赛]字符串大师(逆模拟KMP)

    题目描述 一个串T是S的循环节,当且仅当存在正整数k,使得S是T k  Tk (即T重复k次)的前缀,比如abcd是abcdabcdab的循环节.给定一个长度为n的仅由小写字符构成的字符串S,请对于每 ...

  5. Codeforces 620E New Year Tree【线段树傻逼题】

    LINK 题目大意 给你一棵树 让你支持子树染色,子树查询颜色个数,颜色数<=60, 节点数<=4e5 思路 因为颜色数很少,考虑状态压缩变成二进制 然后直接在dfs序上用线段树维护就可以 ...

  6. LeetCode 424. Longest Repeating Character Replacement

    原题链接在这里:https://leetcode.com/problems/longest-repeating-character-replacement/description/ 题目: Given ...

  7. 百度地图API秘钥生成步骤

    百度API

  8. Android.mk用法详解

    一.Android.mk介绍 Android.mk是Android提供的一种makefile文件,用来指定诸如编译生成so库名.引用的头文件目录.需要编译的.c/.cpp文件和.a静态库文件等.要掌握 ...

  9. phoenix elixir 框架简单试用

    备注:   官方提供的脚手架工具,我们可以直接使用,生成代码,同时需要nodejs 环境配置(比较简单,参考 相关资料即可)  1. 安装脚手架 mix archive.install https:/ ...

  10. geohash 精度

    关于地图的距离.  $list1=Db::name('museum')->where('id','in',$user['gz'])->order('ACOS(SIN(('.$lat.' * ...