Django的session中对于用户验证的支持


Posted in Python onJuly 23, 2015

用户与Authentication

通过session,我们可以在多次浏览器请求中保持数据, 接下来的部分就是用session来处理用户登录了。 当然,不能仅凭用户的一面之词,我们就相信,所以我们需要认证。

当然了,Django 也提供了工具来处理这样的常见任务(就像其他常见任务一样)。 Django 用户认证系统处理用户帐号,组,权限以及基于cookie的用户会话。 这个系统一般被称为 auth/auth (认证与授权)系统。 这个系统的名称同时也表明了用户常见的两步处理。 我们需要

    验证 (认证) 用户是否是他所宣称的用户(一般通过查询数据库验证其用户名和密码)

    验证用户是否拥有执行某种操作的 授权 (通常会通过检查一个权限表来确认)

根据这些需求,Django 认证/授权 系统会包含以下的部分:

    用户 : 在网站注册的人

    权限 : 用于标识用户是否可以执行某种操作的二进制(yes/no)标志

    组 :一种可以将标记和权限应用于多个用户的常用方法

    Messages : 向用户显示队列式的系统消息的常用方法

如果你已经用了admin工具(详见第6章),就会看见这些工具的大部分。如果你在admin工具中编辑过用户或组,那么实际上你已经编辑过授权系统的数据库表了。
打开认证支持

像session工具一样,认证支持也是一个Django应用,放在 django.contrib 中,所以也需要安装。 与session系统相似,它也是缺省安装的,但如果它已经被删除了,通过以下步骤也能重新安装上:

    根据本章早前的部分确认已经安装了session 框架。 需要确认用户使用cookie,这样sesson 框架才能正常使用。

    将 'django.contrib.auth' 放在你的 INSTALLED_APPS 设置中,然后运行 manage.py syncdb以创建对应的数据库表。

    确认 SessionMiddleware 后面的 MIDDLEWARE_CLASSES 设置中包含 'django.contrib.auth.middleware.AuthenticationMiddleware' SessionMiddleware。

这样安装后,我们就可以在视图(view)的函数中处理user了。 在视图中存取users,主要用 request.user ;这个对象表示当前已登录的用户。 如果用户还没登录,这就是一个AnonymousUser对象(细节见下)。

你可以很容易地通过 is_authenticated() 方法来判断一个用户是否已经登录了:

if request.user.is_authenticated():
  # Do something for authenticated users.
else:
  # Do something for anonymous users.

Python 相关文章推荐
Python多进程通信Queue、Pipe、Value、Array实例
Nov 21 Python
python通过shutil实现快速文件复制的方法
Mar 14 Python
Python冲顶大会 快来答题!
Jan 17 Python
Python程序运行原理图文解析
Feb 10 Python
解决python3.5 正常安装 却不能直接使用Tkinter包的问题
Feb 22 Python
Python3.5多进程原理与用法实例分析
Apr 05 Python
使用Windows批处理和WMI设置Python的环境变量方法
Aug 14 Python
Python中BeautifuSoup库的用法使用详解
Nov 15 Python
tensorflow2.0与tensorflow1.0的性能区别介绍
Feb 07 Python
Python实现数字的格式化输出
Aug 01 Python
无惧面试,带你搞懂python 装饰器
Aug 17 Python
Python logging日志库空间不足问题解决
Sep 14 Python
在Django的视图(View)外使用Session的方法
Jul 23 #Python
在Python的Django框架的视图中使用Session的方法
Jul 23 #Python
详解Python的Django框架中的Cookie相关处理
Jul 22 #Python
在Django中使用Sitemap的方法讲解
Jul 22 #Python
用Python的Django框架来制作一个RSS阅读器
Jul 22 #Python
利用Python的Django框架生成PDF文件的教程
Jul 22 #Python
在Python的Django框架中生成CSV文件的方法
Jul 22 #Python
You might like
第4章 数据处理-php数组的处理-郑阿奇
2011/07/04 PHP
PHP中创建和编辑Excel表格的方法
2018/09/13 PHP
PHP Swoole异步读取、写入文件操作示例
2019/10/24 PHP
使用js获取QueryString的方法小结
2010/02/28 Javascript
js捕获鼠标滚轮事件代码
2013/12/16 Javascript
JavaScript中读取和保存文件实例
2014/05/08 Javascript
封装了一个支持匿名函数的Javascript事件监听器
2014/06/05 Javascript
基于promise.js实现nodejs的promises库
2014/07/06 NodeJs
node.js中的http.response.writeHead方法使用说明
2014/12/14 Javascript
jQuery实现数秒后自动提交form的方法
2015/03/05 Javascript
javascript中scrollTop详解
2015/04/13 Javascript
JS及PHP代码编写八大排序算法
2016/07/12 Javascript
Node.js中路径处理模块path详解
2016/11/14 Javascript
vue 打包后的文件部署到express服务器上的方法
2017/08/09 Javascript
Angular使用操作事件指令ng-click传多个参数示例
2018/03/27 Javascript
对vue 键盘回车事件的实例讲解
2018/08/25 Javascript
axios全局注册,设置token,以及全局设置url请求网段的方法
2018/09/25 Javascript
详解jQuery设置内容和属性
2019/04/11 jQuery
layui表格数据复选框回显设置方法
2019/09/13 Javascript
JS实现简易计算器
2020/02/14 Javascript
pyv8学习python和javascript变量进行交互
2013/12/04 Python
python实现通过shelve修改对象实例
2014/09/26 Python
Python isinstance函数介绍
2015/04/14 Python
Python中的super用法详解
2015/05/28 Python
Python使用pylab库实现画线功能的方法详解
2017/06/08 Python
代码详解django中数据库设置
2019/01/28 Python
使用pickle存储数据dump 和 load实例讲解
2019/12/30 Python
如何使用python自带IDLE的几种方法
2020/10/10 Python
德国2018年度最佳在线药房:Bodfeld Apotheke
2019/11/04 全球购物
应用艺术毕业生的自我评价
2013/12/04 职场文书
2014年乡镇安全生产工作总结
2014/12/02 职场文书
2014年银行年终工作总结
2014/12/19 职场文书
写给媳妇的检讨书
2015/05/06 职场文书
python设置 matplotlib 正确显示中文的四种方式
2021/05/10 Python
Python趣味爬虫之用Python实现智慧校园一键评教
2021/05/28 Python
Python 读取千万级数据自动写入 MySQL 数据库
2022/06/28 Python