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 httplib,smtplib使用方法
Sep 06 Python
Python函数参数类型*、**的区别
Apr 11 Python
Python通过matplotlib绘制动画简单实例
Dec 13 Python
Python实现自动上京东抢手机
Feb 06 Python
kafka-python批量发送数据的实例
Dec 27 Python
python实现批量修改文件名
Mar 23 Python
Django-xadmin+rule对象级权限的实现方式
Mar 30 Python
Django通过json格式收集主机信息
May 29 Python
浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点
Jun 08 Python
Python嵌入C/C++进行开发详解
Jun 09 Python
python生成xml时规定dtd实例方法
Sep 21 Python
pytorch中[..., 0]的用法说明
May 20 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目录导航文件代码
2006/10/09 PHP
php把session写入数据库示例
2014/02/26 PHP
Linux系统中为php添加pcntl扩展
2016/08/28 PHP
PHP时间处理类操作示例
2018/09/05 PHP
实例化php类时传参的方法分析
2020/06/05 PHP
ajaxControlToolkit AutoCompleteExtender的用法
2008/10/30 Javascript
jQuery源码分析-02正则表达式 RegExp 常用正则表达式
2011/11/14 Javascript
ajax页面无刷新 IE下遭遇Ajax缓存导致数据不更新的问题
2012/12/11 Javascript
window.location.reload()方法刷新页面弹出要再次显示该网页对话框
2013/04/24 Javascript
javascript实现的图片切割多块效果实例
2015/05/07 Javascript
JS实现浏览器打印、打印预览示例
2017/02/28 Javascript
纯JS实现弹性导航条效果
2017/03/06 Javascript
AngularJs实现聊天列表实时刷新功能
2017/06/15 Javascript
javascript高级模块化require.js的具体使用方法
2017/10/31 Javascript
基于vue-ssr的静态网站生成器VuePress 初体验
2018/04/17 Javascript
解决Vue.js父组件$on无法监听子组件$emit触发事件的问题
2018/09/12 Javascript
jQuery实现图片随机切换、抽奖功能(实例代码)
2019/10/23 jQuery
JavaScript接口实现方法实例分析
2020/05/16 Javascript
JavaScript forEach中return失效问题解决方案
2020/06/01 Javascript
Vue页面手动刷新,实现导航栏激活项还原到初始状态
2020/08/06 Javascript
Antd下拉选择,自动匹配功能的实现
2020/10/24 Javascript
[00:56]2014DOTA2国际邀请赛 DK、iG 赛前探访
2014/07/10 DOTA
举例讲解Python中的list列表数据结构用法
2016/03/12 Python
Python图像处理模块ndimage用法实例分析
2019/09/05 Python
keras 如何保存最佳的训练模型
2020/05/25 Python
pycharm 实现本地写代码,服务器运行的操作
2020/06/08 Python
Python openpyxl模块实现excel读写操作
2020/06/30 Python
python包的导入方式总结
2021/03/02 Python
日期和时间问题
2015/01/04 面试题
小学生成长感言
2014/01/30 职场文书
拾金不昧感谢信范文
2015/01/21 职场文书
销售经理助理岗位职责
2015/04/13 职场文书
会议通知格式范文
2015/04/15 职场文书
感恩教育观后感
2015/06/17 职场文书
高三语文教学反思
2016/02/16 职场文书
MySQL中的隐藏列的具体查看
2021/09/04 MySQL