Django的session中对于用户验证的支持

作者:goldensun 时间:2021-07-21 07:19:16 


用户与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.

标签:Django,session
0
投稿

猜你喜欢

  • oracle12C安装步骤(图文详解)

    2023-07-15 14:19:34
  • 使用pandas对矢量化数据进行替换处理的方法

    2022-03-26 06:53:04
  • Pytest+request+Allure实现接口自动化框架

    2023-08-12 17:29:33
  • python关键字and和or用法实例

    2023-12-19 20:07:40
  • django使用JWT保存用户登录信息

    2022-02-19 17:36:58
  • Python高级编程之消息队列(Queue)与进程池(Pool)实例详解

    2021-12-14 17:30:24
  • 详解pycharm的python包opencv(cv2)无代码提示问题的解决

    2022-01-10 06:45:34
  • python 采用paramiko 远程执行命令及报错解决

    2021-01-23 19:17:16
  • 使用Python的Flask框架来搭建第一个Web应用程序

    2022-12-11 21:46:10
  • 获取星期几的名称

    2012-01-29 18:16:31
  • python 利用panda 实现列联表(交叉表)

    2022-02-21 02:24:32
  • 国外新闻报纸排版布局设计欣赏

    2008-02-25 23:14:00
  • asp程序运行速度测试

    2008-02-11 19:11:00
  • Python出现segfault错误解决方法

    2022-03-18 14:14:58
  • 带中英文翻译功能的收藏夹

    2008-07-31 11:33:00
  • CMS不要让MySQL为你流泪

    2008-12-11 14:38:00
  • 详尽解析javascript的event对象

    2008-01-16 11:27:00
  • Python 实现使用dict 创建二维数据、DataFrame

    2021-09-29 16:49:43
  • 解决pycharm下载库时出现Failed to install package的问题

    2021-07-30 14:15:49
  • python机器学习之线性回归详解

    2022-10-20 19:14:49
  • asp之家 网络编程 m.aspxhome.com