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文件操作整理汇总
Oct 21 Python
Python使用Flask框架获取当前查询参数的方法
Mar 21 Python
python实现简单socket通信的方法
Apr 19 Python
Python常见字符串操作函数小结【split()、join()、strip()】
Feb 02 Python
python版飞机大战代码分享
Nov 20 Python
python调用webservice接口的实现
Jul 12 Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
Oct 17 Python
Python算法的时间复杂度和空间复杂度(实例解析)
Nov 19 Python
Django REST Swagger实现指定api参数
Jul 07 Python
对python中list的五种查找方法说明
Jul 13 Python
python PyAUtoGUI库实现自动化控制鼠标键盘
Sep 09 Python
python 简单的调用有道翻译
Nov 25 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下载excel无法打开的解决方法
2013/12/24 PHP
codeigniter中实现一次性加载多个view的方法
2015/03/20 PHP
php实现SAE上使用storage上传与下载文件的方法
2015/06/29 PHP
Symfony2学习笔记之插件格式分析
2016/03/17 PHP
PHP 断点续传实例详解
2017/11/11 PHP
PHP简单实现欧拉函数Euler功能示例
2017/11/06 PHP
jquery插件之easing 动态菜单
2010/08/21 Javascript
Jquery知识点一 Jquery的ready和Dom的onload的区别
2011/01/15 Javascript
extjs_02_grid显示本地数据、显示跨域数据
2014/06/23 Javascript
jQuery实现提示密码强度的代码
2015/07/15 Javascript
jQuery EasyUi实战教程之布局篇
2016/01/26 Javascript
Javascript表单特效之十大常用原理性样例代码大总结
2016/07/12 Javascript
AngularJS基础 ng-cloak 指令简单示例
2016/08/01 Javascript
基于SpringMVC+Bootstrap+DataTables实现表格服务端分页、模糊查询
2016/10/30 Javascript
vue2.0开发实践总结之入门篇
2016/12/06 Javascript
jQuery实现腾讯信用界面(自制刻度尺)样式
2017/08/15 jQuery
layer弹出层 iframe层去掉滚动条的实例代码
2018/08/17 Javascript
vue路由结构可设一层方便动态添加路由操作
2020/08/31 Javascript
vue内置组件keep-alive事件动态缓存实例
2020/10/30 Javascript
基于vue实现微博三方登录流程解析
2020/11/04 Javascript
解决vue 使用axios.all()方法发起多个请求控制台报错的问题
2020/11/09 Javascript
python获取当前运行函数名称的方法实例代码
2017/04/06 Python
python数据预处理之将类别数据转换为数值的方法
2017/07/05 Python
Python 确定多项式拟合/回归的阶数实例
2018/12/29 Python
在Pycharm中调试Django项目程序的操作方法
2019/07/17 Python
基于pandas中expand的作用详解
2019/12/17 Python
如何基于线程池提升request模块效率
2020/04/18 Python
Python3自定义json逐层解析器代码
2020/05/11 Python
css3打造一款漂亮的卡哇伊按钮
2013/03/20 HTML / CSS
计算机科学与技术应届生求职信
2013/11/07 职场文书
自荐信怎么写好
2013/11/11 职场文书
2014党委书记四风问题对照检查材料思想汇报
2014/09/22 职场文书
西湖英语导游词
2015/02/06 职场文书
人事行政助理岗位职责
2015/04/11 职场文书
学校百日安全活动总结
2015/05/07 职场文书
Redis6.0搭建集群Redis-cluster的方法
2021/05/08 Redis