Django用户认证系统

Django中的用户认证 (使用Django认证系统)

  • Django带有一个用户认证系统。 它处理用户账号、组、权限以及基于cookie的用户会话。

  • 作用:

    1. 添加普通用户和超级用户
    2. 修改密码
  • 文档参见

  • https://docs.djangoproject.com/en/2.2/topics/auth/

  • User模型类

  • 位置: from django.contrib.auth.models import User

  • 默认user的基本属性有:

    属性名类型是否必选
    username用户名
    password密码
    email邮箱可选
    first_name
    last_name
    is_superuser是否是管理员帐号(/admin)
    is_staff是否可以访问admin管理界面
    is_active是否是活跃用户,默认True。一般不删除用户,而是将用户的is_active设为False。
    last_login上一次的登录时间
    date_joined用户创建的时间

auth基本模型操作:

  • 创建用户

    • 创建普通用户create_user

      from django.contrib.auth.models import User
      user = User.objects.create_user(username='用户名', password='密码', email='邮箱',...)
      
      
    • 创建超级用户create_superuser

      from django.contrib.auth.models import User
      user = User.objects.create_superuser(username='用户名', password='密码', email='邮箱',...)
      
  • 删除用户

    from django.contrib.auth.models import User
    try:
        user = User.objects.get(username='用户名')
        user.is_active = False  # 记当前用户无效
        user.save()
        print("删除普通用户成功!")
    except:
        print("删除普通用户失败")
    
    
  • 修改密码set_password

    from django.contrib.auth.models import User
    try:
        user = User.objects.get(username='xiaonao')
        user.set_password('654321')
        user.save()
        return HttpResponse("修改密码成功!")
    except:
        return HttpResponse("修改密码失败!")
    
  • 检查密码是否正确check_password

    from django.contrib.auth.models import User
    try:
        user = User.objects.get(username='xiaonao')
        if user.check_password('654321'):  # 成功返回True,失败返回False
            return HttpResponse("密码正确")
        else:
            return HttpResponse("密码错误")
    except: 
        return HttpResponse("没有此用户!")
    

auth扩展字段

如果需要在默认auth表上扩展新的字段,如phone
1,添加新的应用
2,定义模型类 继承 AbstractUser
3,settings.py中 指明 AUTH_USER_MODEL = '应用名.类名'

#models.py案例
from django.db import models
from django.contrib.auth.models import AbstractUser

# Create your models here.
class UserInfo(AbstractUser):

    phone = models.CharField(max_length=11, default='')
    
#settings.py添加配置
AUTH_USER_MODEL = 'user.UserInfo'

#添加用户
from user.models import UserInfo
UserInfo.objects.create_user(username='guoxiao', password='123456', phone='13488871101')

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Django认证系统提供了一系列的 API 来帮助你管理用户认证和授权。以下是一些常用的认证 API: ### 用户认证 * `authenticate(request, username=None, password=None, **kwargs)`: 使用指定的用户名和密码来认证用户。如果认证成功,返回一个用户对象;否则,返回 `None`。 * `login(request, user, backend=None)`: 使用指定的用户对象来登录当前会话。在登录后,`request.user` 将会返回该用户对象。如果指定了 `backend` 参数,Django 将会使用该后端来验证用户。 * `logout(request)`: 登出当前用户,删除用户的会话信息。 ### 用户授权 * `user_passes_test(test_func, login_url=None, redirect_field_name=None)`: 用于为视图函数添加自定义的用户授权规则。`test_func` 是一个返回布尔值的函数,如果返回 `True`,则表示用户有权限访问该视图函数。如果返回 `False`,则表示用户没有权限,将会被重定向到 `login_url` 指定的登录页面。如果指定了 `redirect_field_name` 参数,则将会在 URL 参数中添加一个名为该参数值的字段,用于存储重定向前的 URL。 ### 用户信息 * `User.objects.create_user(username, email=None, password=None, **extra_fields)`: 创建一个普通用户,并保存到数据库中。`username` 参数是必须的,`email` 和 `password` 参数是可选的。`extra_fields` 参数可以用于存储其他的用户信息。 * `User.objects.create_superuser(username, email, password, **extra_fields)`: 创建一个超级用户,并保存到数据库中。超级用户具有所有权限。`username`、`email` 和 `password` 参数是必须的,`extra_fields` 参数可以用于存储其他的用户信息。 * `request.user`: 在视图函数中,可以使用 `request.user` 来获取当前访问用户的信息。如果用户没有登录,`request.user` 将会返回一个匿名用户对象。 * `user.is_authenticated`: 在视图函数或模板中,可以使用 `user.is_authenticated` 来判断当前用户是否已经登录。如果用户已经登录,该属性将会返回 `True`;否则,将会返回 `False`。 以上是 Django认证系统常用的 API,你可以根据自己的需求来选择使用。在使用这些 API 之前,你需要先在设置文件中配置认证后端。你可以使用 Django 提供的默认认证后端,也可以自定义认证后端来满足自己的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fan Wang&YuanyuanLuo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值