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 fabric实现远程操作和部署示例
Mar 25 Python
python命令行参数解析OptionParser类用法实例
Oct 09 Python
python单例模式获取IP代理的方法详解
Sep 13 Python
python 实现数字字符串左侧补零的方法
Dec 04 Python
Python如何处理大数据?3个技巧效率提升攻略(推荐)
Apr 15 Python
python字典改变value值方法总结
Jun 21 Python
在python中计算ssim的方法(与Matlab结果一致)
Dec 19 Python
Python连接Impala实现步骤解析
Aug 04 Python
Python 使用xlwt模块将多行多列数据循环写入excel文档的操作
Nov 10 Python
Python类class参数self原理解析
Nov 19 Python
Python 可视化神器Plotly详解
Dec 26 Python
python中os.path.join()函数实例用法
May 26 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
第四节--构造函数和析构函数
2006/11/16 PHP
PHP微信开发之根据用户回复关键词\位置返回附近信息
2016/06/24 PHP
php生成0~1随机小数的方法(必看)
2017/04/05 PHP
php获取'/'传参的值简单方法
2017/07/13 PHP
php实现 master-worker 守护多进程模式的实例代码
2019/07/20 PHP
用Jquery实现可编辑表格并用AJAX提交到服务器修改数据
2009/12/27 Javascript
JavaScript 产生不重复的随机数三种实现思路
2012/12/13 Javascript
JavaScript的事件代理和委托实例分析
2015/03/25 Javascript
微信支付如何实现内置浏览器的H5页面支付
2015/09/25 Javascript
安装使用Mongoose配合Node.js操作MongoDB的基础教程
2016/03/01 Javascript
Angularjs中UI Router的使用方法
2016/05/14 Javascript
第一次接触神奇的Bootstrap表单
2016/07/27 Javascript
seajs学习之模块的依赖加载及模块API的导出
2016/10/20 Javascript
Bootstrap CSS布局之按钮
2016/12/17 Javascript
利用Query+bootstrap和js两种方式实现日期选择器
2017/01/10 Javascript
Angularjs 动态添加指令并绑定事件的方法
2017/04/13 Javascript
通过cordova将vue项目打包为webapp的方法
2019/02/02 Javascript
Python实时获取cmd的输出
2015/12/13 Python
Python实现将一个正整数分解质因数的方法分析
2017/12/14 Python
wtfPython—Python中一组有趣微妙的代码【收藏】
2018/08/31 Python
推荐10款最受Python开发者欢迎的Python IDE
2018/09/16 Python
Django中如何防范CSRF跨站点请求伪造攻击的实现
2019/04/28 Python
python TK库简单应用(实时显示子进程输出)
2019/10/29 Python
python实现上传文件到linux指定目录的方法
2020/01/03 Python
微软新西兰官方网站:Microsoft New Zealand
2018/08/17 全球购物
仓库主管的岗位职责
2013/12/04 职场文书
教师实习自我鉴定
2013/12/13 职场文书
大学军训感言
2014/01/10 职场文书
初一科学教学反思
2014/01/27 职场文书
小班秋游活动方案
2014/02/22 职场文书
商场主管竞聘书
2014/03/31 职场文书
小学生田径运动会广播稿
2014/09/11 职场文书
2016重阳节红领巾广播稿
2015/12/18 职场文书
导游词之北京明十三陵
2019/10/28 职场文书
python实现过滤敏感词
2021/05/08 Python
Spring Data JPA框架的核心概念和Repository接口
2022/04/28 Java/Android