博客
关于我
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/

    你可能感兴趣的文章
    Shell脚本防DNS攻击检测并删除肉机IP
    查看>>
    如何在VSCode中定制JSON的IntelliSense
    查看>>
    傅里叶变换时域和频域之间的对应关系
    查看>>
    椭圆曲线的定义
    查看>>
    多代理区块链框架客户端的操作
    查看>>
    RSA操作中的公钥和私钥的生成
    查看>>
    C#从1打印到100再打印到1-递归的应用
    查看>>
    go语言中类的继承和方法的使用
    查看>>
    Ubuntu 修改权限的操作
    查看>>
    caffe训练的时候遇到的text-format 错误解决方案。
    查看>>
    Java 8新特性(一):Lambda表达式
    查看>>
    ZOJ问题(坑死了)
    查看>>
    Little Zu Chongzhi's Triangles
    查看>>
    算法入门
    查看>>
    cf-A. Wet Shark and Odd and Even(水)
    查看>>
    Train Problem II(卡特兰数+大数乘除)
    查看>>
    Ignatius and the Princess II(全排列)
    查看>>
    一些技术博客
    查看>>
    第01问:MySQL 一次 insert 刷几次盘?
    查看>>
    分布式 | DBLE 3.20.07.0 来啦!
    查看>>