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将字符串转换成数组的方法
Apr 29 Python
举例讲解Python的Tornado框架实现数据可视化的教程
May 02 Python
Python字符串拼接、截取及替换方法总结分析
Apr 13 Python
python 获取指定文件夹下所有文件名称并写入列表的实例
Apr 23 Python
numpy 进行数组拼接,分别在行和列上合并的实例
May 08 Python
pytorch 在sequential中使用view来reshape的例子
Aug 20 Python
关于pytorch中网络loss传播和参数更新的理解
Aug 20 Python
Python搭建HTTP服务过程图解
Dec 14 Python
python wav模块获取采样率 采样点声道量化位数(实例代码)
Jan 22 Python
django中related_name的用法说明
May 20 Python
关于探究python中sys.argv时遇到的问题详解
Feb 23 Python
Django项目如何正确配置日志(logging)
Apr 29 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二维数组排序的函数分享
2014/01/17 PHP
PHP框架Swoole定时器Timer特性分析
2014/08/19 PHP
在Laravel中实现使用AJAX动态刷新部分页面
2019/10/15 PHP
Auntion-TableSort国人写的一个javascript表格排序的东西
2007/11/12 Javascript
DOM下的节点属性和操作小结
2009/05/14 Javascript
js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)
2013/02/02 Javascript
使用Grunt.js管理你项目的应用说明
2013/04/24 Javascript
JS(JQuery)操作Array的相关方法介绍
2014/02/11 Javascript
一种Javascript解释ajax返回的json的好方法(推荐)
2016/06/02 Javascript
JS实现添加,替换,删除节点元素的方法
2016/06/30 Javascript
BootStrap注意事项小结(五)表单
2017/03/10 Javascript
解决低版本的浏览器不支持es6的import问题
2018/03/09 Javascript
VUE 组件转换为微信小程序组件的方法
2019/11/06 Javascript
深入浅析golang zap 日志库使用(含文件切割、分级别存储和全局使用等)
2020/02/19 Javascript
通过实例解析vuejs如何实现调试代码
2020/07/16 Javascript
JavaScript JSON使用原理及注意事项
2020/07/30 Javascript
在类Unix系统上开始Python3编程入门
2015/08/20 Python
使用Python发送各种形式的邮件的方法汇总
2015/11/09 Python
在Python web中实现验证码图片代码分享
2017/11/09 Python
如何在Django中添加没有微秒的 DateTimeField 属性详解
2019/01/30 Python
python实现矩阵打印
2019/03/02 Python
使用pickle存储数据dump 和 load实例讲解
2019/12/30 Python
pytorch方法测试——激活函数(ReLU)详解
2020/01/15 Python
python PyAUtoGUI库实现自动化控制鼠标键盘
2020/09/09 Python
Python实现AES加密,解密的两种方法
2020/10/03 Python
Python抖音快手代码舞(字符舞)的实现方法
2021/02/07 Python
css3如何绘制一个圆圆的loading转圈动画
2018/01/09 HTML / CSS
美国百年历史早餐食品供应商:Wolferman’s
2017/01/18 全球购物
FitFlop澳大利亚官网:英国符合人体工学的鞋类品牌
2017/06/05 全球购物
女性时尚在线:IVRose
2019/02/23 全球购物
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?用contains来区分是否有重复的对象。还是都不用
2013/07/30 面试题
计算s=f(f(-1.4))的值
2014/05/06 面试题
英语教师求职信范文
2015/03/20 职场文书
西游降魔篇观后感
2015/06/15 职场文书
2016清明节森林防火广播稿
2015/12/17 职场文书
vue 数字翻牌器动态加载数据
2022/04/20 Vue.js