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的Flask框架中实现登录用户的个人资料和头像的教程
Apr 20 Python
详解python中asyncio模块
Mar 03 Python
Python3之读取连接过的网络并定位的方法
Apr 22 Python
django静态文件加载的方法
May 20 Python
python3模块smtplib实现发送邮件功能
May 22 Python
python定时关机小脚本
Jun 20 Python
详解Python利用random生成一个列表内的随机数
Aug 21 Python
python字典setdefault方法和get方法使用实例
Dec 25 Python
python Tensor和Array对比分析
Jan 08 Python
vue常用指令代码实例总结
Mar 16 Python
使用matplotlib的pyplot模块绘图的实现示例
Jul 12 Python
浅谈Python中对象是如何被调用的
Apr 06 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
《APMServ 5.1.2》使用图解
2006/10/23 PHP
超级实用的7个PHP代码片段分享
2012/01/05 PHP
修改destoon会员公司的伪静态中的com目录的方法
2014/08/21 PHP
深入探究PHP的多进程编程方法
2015/08/18 PHP
php+MySql实现登录系统与输出浏览者信息功能
2016/07/01 PHP
在TP5数据库中四个字段实现无限分类的示例
2019/10/18 PHP
用jscript实现列出安装的软件列表
2007/06/18 Javascript
JS input文本框禁用右键和复制粘贴功能的代码
2010/04/15 Javascript
jquery select 设置默认选中的示例代码
2014/02/07 Javascript
JS实现回到页面顶部动画效果的简单实例
2016/05/24 Javascript
js动态生成form 并用ajax方式提交的实现方法
2016/09/09 Javascript
微信小程序 中wx.chooseAddress(OBJECT)实例详解
2017/03/31 Javascript
Vue.extend构造器的详解
2017/07/17 Javascript
vue.js的双向数据绑定Object.defineProperty方法的神奇之处
2019/01/18 Javascript
使用vuex存储用户信息到localStorage的实例
2019/11/11 Javascript
node.js实现http服务器与浏览器之间的内容缓存操作示例
2020/02/11 Javascript
vue-cli打包后本地运行dist文件中的index.html操作
2020/08/12 Javascript
es5 类与es6中class的区别小结
2020/11/09 Javascript
[09:22]2014DOTA2西雅图国际邀请赛 主赛事第二日TOPPLAY
2014/07/21 DOTA
Python中字典创建、遍历、添加等实用操作技巧合集
2015/06/02 Python
python基于phantomjs实现导入图片
2016/05/13 Python
python2.x实现人民币转大写人民币
2018/06/20 Python
python使用tomorrow实现多线程的例子
2019/07/20 Python
Python获取时间范围内日期列表和周列表的函数
2019/08/05 Python
纯css3实现效果超级炫的checkbox复选框和radio单选框
2014/09/01 HTML / CSS
美国手机支架公司:PopSockets
2019/11/27 全球购物
外语学院毕业生的自我鉴定
2013/11/28 职场文书
房地产广告策划方案
2014/05/15 职场文书
活动总结格式
2014/08/30 职场文书
挂职学习心得体会
2014/09/09 职场文书
人事主管岗位职责
2015/02/04 职场文书
终止解除劳动合同证明书
2015/06/17 职场文书
老乡会致辞
2015/07/28 职场文书
军事理论课感想
2015/08/11 职场文书
MYSQL如何查看进程和kill进程
2022/03/13 MySQL
《废话连篇——致新手》——chinapizza
2022/04/05 无线电