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使用urllib模块的urlopen超时问题解决方法
Nov 08 Python
对于Python的Django框架使用的一些实用建议
Apr 03 Python
python正则表达式爬取猫眼电影top100
Feb 24 Python
python实现两个文件合并功能
Apr 01 Python
Python 统计字数的思路详解
May 08 Python
python使用adbapi实现MySQL数据库的异步存储
Mar 19 Python
python实现微信自动回复机器人功能
Jul 11 Python
python实现抠图给证件照换背景源码
Aug 20 Python
Django微信小程序后台开发教程的实现
Jun 03 Python
python 解决mysql where in 对列表(list,,array)问题
Jun 06 Python
python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)
Apr 12 Python
Django cookie和session的应用场景及如何使用
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使用PDO方法详解
2014/12/27 PHP
thinkPHP5.0框架命名空间详解
2017/03/18 PHP
JS IE和FF兼容性问题汇总
2009/02/09 Javascript
通用javascript脚本函数库 方便开发
2009/10/13 Javascript
JQuery for与each性能比较分析
2013/05/14 Javascript
Area 区域实现post提交数据的js写法
2014/04/22 Javascript
一行命令搞定node.js 版本升级
2014/07/20 Javascript
简介AngularJS中使用factory和service的方法
2015/06/17 Javascript
JavaScript数据结构与算法之链表
2016/01/29 Javascript
JS关闭窗口时产生的事件及用法示例
2016/08/20 Javascript
Vue实现动态显示textarea剩余字数
2017/05/22 Javascript
用vue的双向绑定简单实现一个todo-list的示例代码
2017/08/03 Javascript
angular2路由之routerLinkActive指令【推荐】
2018/05/30 Javascript
JQuery获取可视区尺寸和文档尺寸及制作悬浮菜单示例
2019/05/14 jQuery
详解vuex的简单todolist例子
2019/07/14 Javascript
javascript实现页面的实时时钟显示示例
2020/08/06 Javascript
Vue 解决在element中使用$notify在提示信息中换行问题
2020/11/11 Javascript
python读取csv文件示例(python操作csv)
2014/03/11 Python
使用Python下载歌词并嵌入歌曲文件中的实现代码
2015/11/13 Python
Django 内置权限扩展案例详解
2019/03/04 Python
python爬虫 线程池创建并获取文件代码实例
2019/09/28 Python
python 中的命名空间,你真的了解吗?
2020/08/19 Python
Django admin组件的使用
2020/10/24 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
2020/11/02 Python
德国团购网站:Groupon德国
2018/03/13 全球购物
护理学毕业生自荐信
2013/10/02 职场文书
建筑人员岗位职责
2013/12/25 职场文书
商场总经理岗位职责
2014/02/03 职场文书
电脑专业个人求职信范文
2014/02/04 职场文书
秋天的图画教学反思
2014/05/01 职场文书
普通党员群众路线教育实践活动心得体会
2014/11/04 职场文书
承兑汇票转让证明怎么写?
2014/11/30 职场文书
2014年前台接待工作总结
2014/12/05 职场文书
高校自主招生校长推荐信
2015/03/23 职场文书
市场督导岗位职责
2015/04/10 职场文书
积极心理学课程心得体会
2016/01/22 职场文书