博客
关于我
Django认证系统
阅读量:630 次
发布时间:2019-03-14

本文共 1529 字,大约阅读时间需要 5 分钟。

Django 用户认证系统

Django 内置了强大的用户认证系统,基于 auth 模块,默认使用 auth_user 表存储用户信息。这个系统不仅提供用户认证功能,还支持授权管理,通常统称为认证系统。

User 对象

在 Django 认证系统的核心是 User 对象,这个对象代表站点与之交互的用户。它通常用于限制访问、注册用户、管理用户信息等功能。值得注意的是,Django 的认证系统中只有一种类型的用户,例如 superusersstaff 用户并不是独立的 User 对象,而是具有特殊属性集的 User 对象。

默认 User 属性

  • 用户名 (username)
  • 密码 (password)
  • 电子邮件 (email)
  • 名字 (first_name)
  • 姓姓 (last_name)

auth 模块

auth 模块提供了丰富的用户认证功能,常用方法如下:

  • authenticate(username, password)

    用于验证用户名和密码。如果认证成功,将返回一个 User 对象,并在其上设置一个标识已登录的属性,为后续操作提供重要依据。

  • login(request, user_obj)

    使用该方法执行登录功能,会为请求生成相应的会话数据,使 request.user 可以获得当前登录用户对象。如果未使用该方法,request.user 将返回匿名用户对象 AnonymousUser Object

  • logout(request)

    该方法用于注销当前用户,将请求的会话数据清除。

  • is_authenticated()

    判断当前请求是否已通过认证。

  • create_user(username, password, email, ...) [模板方法]

    创建新用户时,需要提供 username、password 等必填参数。此外还可以 optionally 提供 email、first_name、last_name 等信息。

  • create_superuser(username, password, email, ..., is_staff=True, is_superuser=True)

    创建超级用户,即具有最高权限的用户。

  • check_password(raw_password) [模板方法]

    检查用户的密码是否正确,需提供原始密码。

  • set_password(raw_password) [模板方法]

    更改用户密码后,需要手动保存 (user_obj.save()).


  • 扩展 auth-user 表

    默认的 auth_user 表字段较少,不足以满足项目需求。我们可以通过继承内置的 AbstractUser 类定义自己的模型类 UserInfo,实现对用户表的扩展。这既是灵活的设计,也能充分利用 Django 强大的认证系统。

    示例代码:

    from django.contrib.auth.models import AbstractUserclass UserInfo(AbstractUser):    nid = models.AutoField(primary_key=True)    phone = models.CharField(max_length=11, null=True, unique=True)

    settings.py 中设置:

    AUTH_USER_MODEL = 'yourapp.UserInfo'

    使用扩展后的表时,需重新创建数据库,不能直接使用原 auth_user 表。


    通过以上功能,您可以轻松实现用户认证、管理以及自定义用户表结构,充分发挥 Django 功能的强大!

    转载地址:http://vxylz.baihongyu.com/

    你可能感兴趣的文章
    wxWidgets源码分析(3) - 消息映射表
    查看>>
    wxWidgets源码分析(5) - 窗口管理
    查看>>
    wxWidgets源码分析(8) - MVC架构
    查看>>
    wxWidgets源码分析(9) - wxString
    查看>>
    [梁山好汉说IT] 梁山好汉和抢劫银行
    查看>>
    [源码解析] 消息队列 Kombu 之 基本架构
    查看>>
    [源码分析] 消息队列 Kombu 之 启动过程
    查看>>
    wx.NET CLI wrapper for wxWidgets
    查看>>
    Silverlight for linux 和 DLR(Dynamic Language Runtime)
    查看>>
    ASP.NET MVC Action Filters
    查看>>
    Powershell中禁止执行脚本解决办法
    查看>>
    OO_Unit2 多线程电梯总结
    查看>>
    git clone 出现fatal: unable to access ‘https://github 错误解决方法
    查看>>
    04_Mysql配置文件(重要参数)
    查看>>
    python 加密算法及其相关模块的学习(hashlib,RSA,random,string,math)
    查看>>
    JavaSE总结
    查看>>
    手动造轮子——基于.NetCore的RPC框架DotNetCoreRpc
    查看>>
    Python IO编程
    查看>>
    CSS入门总结
    查看>>
    使用 TortoiseGit 时,报 Access denied 错误
    查看>>