最近弄django的时候在用户登录这一块遇到了困难,网上的资料也都不完整或者存在缺陷。

写这篇文章的主要目的是对一些刚学django的新手朋友提供一些帮助。前提是你对django中的session和cookie已经有了一定的了解。

我最基本的设想是当用户登陆了网站后,用户访问本网站的其他网页时依旧能识别其身份。

很多教程的方法是在用户的cookie中存储用户名,这种方法当然是非常不安全的。

其实只要我们使用了django中的session,django就会自动在用户的cookie中存储 sessionid ,用以识别用户。

比如,我们设计了一个用户登录的视图

其中我们使用了 request.session['username'] = username 来使用session保存用户名。

这样一来django便会自动设置在cookie中存储sessionid

我们来试验一下。

1.首先打开login页面,可以看到这时候cookie中只有我们的csrf的token

2.这时我们尝试登陆

3.登陆成功后,系统会为我们分配一个sessionid

4.这时假设我们在设计一个主页的视图,尝试根据session获取用户名,如果获取不到则说明,用户未登录

5.我们进入该页面,由于之前我们cookie中的sesionid还在,所以这里会显示我们的用户名

7.假如我们要登出,我们只需要使用session的 flush函数,django便会删除session以及用户cookie中的sessionid,视图如下

8.在我们登出之后,我们在刷新之前的主页,我们会发现,我们变成了游客,cookie中的sessionid也被删除,这说明我们的思路是没有错误的,当然这只是最基本的用户登录思路,真正实用时,我们需要进一步完善我们的认证系统。

关于django用户登录认证中的cookie和session的更多相关文章

  1. django系列7.2--django中的cookie和session基本操作,浏览器登陆验证的不同实现

    django中的cookie和session(02)–操作 一.Django中的cookie操作 ctrl + shift + del 是谷歌浏览器中清除页面缓存和cookie的快捷键 1.设置coo ...

  2. django rest_framework 实现用户登录认证

    django rest_framework 实现用户登录认证 1.安装 pip install djangorestframework 2.创建项目及应用 创建过程略 目录结构如图 3.设置setti ...

  3. {Django基础八之cookie和session}一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session

    Django基础八之cookie和session 本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx 七 ...

  4. 基于jwt的用户登录认证

    最近在app的开发过程中,做了一个基于token的用户登录认证,使用vue+node+mongoDB进行的开发,前来总结一下. token认证流程: 1:用户输入用户名和密码,进行登录操作,发送登录信 ...

  5. 2018-8-16JWTtoken用户登录认证思路分析9502751

    2018-8-16JWTtoken用户登录认证思路分析9502751 JWT token在商城中的实现 class UserView(CreateAPIView): serializer_class ...

  6. IM开发基础知识补课(四):正确理解HTTP短连接中的Cookie、Session和Token

    本文引用了简书作者“骑小猪看流星”技术文章“Cookie.Session.Token那点事儿”的部分内容,感谢原作者. 1.前言 众所周之,IM是个典型的快速数据流交换系统,当今主流IM系统(尤其移动 ...

  7. Django---Django中使用COOKIE和SESSION

    Django---Django中使用COOKIE和SESSION 一丶Cookie cookie的由来 # HTTP协议是无状态的. # 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请 ...

  8. 第74节:Java中的Cookie和Session

    第74节:第74节:Java中的Cookie和Session ServletContext: 什么是ServletContext,有什么用哦,怎么用呢? 启动服务器后,会给每个应用程序创建一个Serv ...

  9. Node中的Cookie和Session

    1.Cookie HTTP是无状态协议.例:打开一个域名的首页,进而打开该域名的其他页面,服务器无法识别访问者.即同一浏览器访问同一网站,每次访问都没有任何关系. Cookie的原理是:客户端浏览器在 ...

随机推荐

  1. 【论文速读】Multi-Oriented Scene Text Detection via Corner Localization and Region Segmentation[2018-CPVR]

    方法概述 该方法用一个端到端网络完成文字检测整个过程——除了基础卷积网络(backbone)外,包括两个并行分支和一个后处理.第一个分支是通过一个DSSD网络进行角点检测来提取候选文字区域,第二个分支 ...

  2. docker 容器的mysql主从复制

    一. 1.首先拉取docker镜像,我们这里使用5.7版本的mysql:   docker pull mysql:5.7 2.分别启动主从两个容器: docker run -p 3339:3306 - ...

  3. [luogu P3391] 文艺平衡树

    [luogu P3391] 文艺平衡树 题目背景 这是一道经典的Splay模板题——文艺平衡树. 题目描述 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区 ...

  4. TP5.0 PHPExcel 数据表格导出导入(原)

    今天看的是PHPExcel这个扩展库,Comporse 下载不下来,最后只能自己去github里面手动下载,但有一个问题就是下载下来的PHPExcel没有命名空间,所以框架里面的use根本引入不进去, ...

  5. 8、TypeScript-解构赋值

    1.数组的解构赋值 2.对象的解构赋值 注意:在浏览器环境中,windows本身有一个成员name,所以要重新,语法为  属性名:重命名 3.函数的解构赋值

  6. RPA简介

    开篇: 公司正在全面推广RPA,正好借此机会学习一下,发现国内对RPA的了解较少,萌生了在博客园开博,同时锻炼一下自己的输出能力,纯笔记,如有不足之处,请指正,共勉. 阅读目录: 1. 什么是RPA ...

  7. STL 小白学习(8) set 二叉树

    #include <iostream> using namespace std; #include <set> void printSet(set<int> s) ...

  8. 使用JS判断不同的终端设备

    const ua: string = window.navigator.userAgent; const isWeixin: boolean = /MicroMessenger/i.test(ua); ...

  9. kafka已生产消息查看

    在测试过程中有用到kafka,由于开发说我往kafka里面生产了消息,通知了对方要消费....看到这块一头雾水 kafka主要2个功能生产和消费 ##查询topic列表 ./kafka-topics. ...

  10. C# 加载并显示菜单

    1,支持cui和cuix. 2,菜单组重复加载或显示,C#下都会崩溃.所以要判断. 3,菜单加到最后. public static AcadMenuGroup LoadMenu(AcadMenuGro ...