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的Django框架环境并建立和运行第一个App的教程
Jul 02 Python
Python实现的下载网页源码功能示例
Jun 13 Python
python中requests爬去网页内容出现乱码问题解决方法介绍
Oct 25 Python
使用Python监视指定目录下文件变更的方法
Oct 15 Python
python使用response.read()接收json数据的实例
Dec 19 Python
Django 实现前端图片压缩功能的方法
Aug 07 Python
python 解决flask uwsgi 获取不到全局变量的问题
Dec 22 Python
基于TensorFlow的CNN实现Mnist手写数字识别
Jun 17 Python
django模型类中,null=True,blank=True用法说明
Jul 09 Python
python实现数据结构中双向循环链表操作的示例
Oct 09 Python
Python使用Pygame绘制时钟
Nov 29 Python
关于Python OS模块常用文件/目录函数详解
Jul 01 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
PHP开发文件系统实例讲解
2006/10/09 PHP
php allow_url_include的应用和解释
2010/04/22 PHP
PHP 数组遍历方法大全(foreach,list,each)
2010/06/30 PHP
dedecms集成财付通支付接口
2014/12/28 PHP
PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
2016/02/26 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
2019/10/11 PHP
PHP常量及变量区别原理详解
2020/08/14 PHP
jQuery中获取Radio元素值的方法
2013/07/02 Javascript
javascript函数作用域学习示例(js作用域)
2014/01/13 Javascript
基于Javascript实现弹出页面效果
2016/01/01 Javascript
Markdown与Bootstrap相结合实现图片自适应属性
2016/05/04 Javascript
JS 获取HTML标签内的子节点的方法
2016/09/21 Javascript
JS使用正则截取两个字符串之间的字符串实现方法详解
2017/01/06 Javascript
原生js实现弹出层效果
2017/01/20 Javascript
JavaScript实现的商品抢购倒计时功能示例
2017/04/17 Javascript
原生JS+HTML5实现的可调节写字板功能示例
2018/08/30 Javascript
vue生成文件本地打开查看效果的实例
2018/09/06 Javascript
详解JavaScript事件循环机制
2018/09/07 Javascript
npm scripts 使用指南详解
2018/10/08 Javascript
node中IO以及定时器优先级详解
2019/05/10 Javascript
20个必会的JavaScript面试题(小结)
2019/07/02 Javascript
JS实现百度搜索框关键字推荐
2020/02/17 Javascript
javascript设计模式 ? 简单工厂模式原理与应用实例分析
2020/04/09 Javascript
Vue-cli 移动端布局和动画使用详解
2020/08/10 Javascript
[01:05:30]VP vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python入门篇之条件、循环
2014/10/17 Python
python实现颜色rgb和hex相互转换的函数
2015/03/19 Python
python中enumerate函数遍历元素用法分析
2016/03/11 Python
代码详解django中数据库设置
2019/01/28 Python
python 深度学习中的4种激活函数
2020/09/18 Python
如何在Shell脚本中使用函数
2015/09/06 面试题
党的群众路线教育实践活动对照检查剖析材料
2014/10/09 职场文书
上班迟到检讨书300字
2014/10/18 职场文书
2019年度开业庆典祝福语大全!
2019/07/05 职场文书
MySQL创建管理KEY分区
2022/04/13 MySQL
Java Redisson多策略注解限流
2022/09/23 Java/Android