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 相关文章推荐
初步剖析C语言编程中的结构体
Jan 16 Python
Python实现线程状态监测简单示例
Mar 28 Python
python生成不重复随机数和对list乱序的解决方法
Apr 09 Python
浅析Python装饰器以及装饰器模式
May 28 Python
python远程调用rpc模块xmlrpclib的方法
Jan 11 Python
使用pandas把某一列的字符值转换为数字的实例
Jan 29 Python
详解Python Matplot中文显示完美解决方案
Mar 07 Python
Python实现的列表排序、反转操作示例
Mar 13 Python
Django框架安装方法图文详解
Nov 04 Python
Django中提示消息messages的设置方式
Nov 15 Python
Python中有几个关键字
Jun 04 Python
Python 实现国产SM3加密算法的示例代码
Sep 21 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使用ob_start()实现图片存入变量的方法
2014/11/14 PHP
PHP利用Socket获取网站的SSL证书与公钥
2017/06/18 PHP
PHP+AjaxForm异步带进度条上传文件实例代码
2017/08/14 PHP
Laravel框架实现简单的学生信息管理平台案例
2019/05/07 PHP
jQuery使用手册之三 CSS操作
2007/03/24 Javascript
javascript 字符串连接的性能问题(多浏览器)
2008/11/18 Javascript
js cookies 常见网页木马挂马代码 24小时只加载一次
2009/04/13 Javascript
javascript new一个对象的实质
2010/01/07 Javascript
JavaScript window.document的属性、方法和事件小结
2012/10/24 Javascript
Ext JS 4官方文档之三 -- 类体系概述与实践
2012/12/16 Javascript
利用javascript打开模态对话框(示例代码)
2014/01/11 Javascript
Jquery遍历checkbox获取选中项value值的方法
2014/02/13 Javascript
利用Js的console对象,在控制台打印调式信息测试Js的实现
2016/11/26 Javascript
Javascript 链式作用域详细介绍
2017/02/23 Javascript
vue中用H5实现文件上传的方法实例代码
2017/05/27 Javascript
js读取本地文件的实例
2017/12/22 Javascript
使用electron制作满屏心特效的示例代码
2018/11/27 Javascript
js实现无缝滚动双图切换效果
2019/07/09 Javascript
vue新建项目并配置标准路由过程解析
2019/12/09 Javascript
如何基于javascript实现贪吃蛇游戏
2020/02/09 Javascript
JSON stringify方法原理及实例解析
2020/10/23 Javascript
python中关于时间和日期函数的常用计算总结(time和datatime)
2013/03/08 Python
浅谈Python NLP入门教程
2017/12/25 Python
Python爬虫获取整个站点中的所有外部链接代码示例
2017/12/26 Python
pandas 获取季度,月度,年度首尾日期的方法
2018/04/11 Python
详解配置Django的Celery异步之路踩坑
2018/11/25 Python
Python3.9新特性详解
2020/10/10 Python
Python 列表反转显示的四种方法
2020/11/16 Python
在印度上传处方,在线订购药品:Medlife
2019/03/28 全球购物
软件测试面试题
2015/10/21 面试题
火锅店营销方案
2014/02/26 职场文书
《忆江南》教学反思
2014/04/07 职场文书
查摆问题对照检查材料
2014/08/28 职场文书
五年级上册复习计划
2015/01/19 职场文书
作弊检讨书
2015/01/27 职场文书
《刺客之王:C罗全景传记》:时代从来不会亏待手艺人
2019/11/28 职场文书