Django的用户认证

简介: 【8月更文挑战第21天】

Django的用户认证系统是一个强大的内置应用,用于处理用户登录、注册、权限控制等认证相关功能。

Django用户认证组件基础

  1. 导入认证模块

    from django.contrib import auth
    from django.contrib.auth.models import User
    
  2. 创建用户

    • User.objects.create():创建一个普通用户,密码为明文。
    • User.objects.create_user():创建一个普通用户,密码为密文。
    • User.objects.create_superuser():创建一个超级用户,密码为密文,需要提供邮箱。
  3. 参数

    • username:用户名。
    • password:密码。
    • email:邮箱(仅在创建超级用户时需要)。

用户认证

  1. authenticate() 方法:验证用户的用户名和密码。

    • 参数:usernamepassword
    • 返回值:如果验证成功,返回用户对象;否则返回 None
  2. 实例

    def login(request):
        # ...省略其他代码...
        user_obj = auth.authenticate(username=username, password=password)
        if user_obj is not None:
            # 用户验证成功
            auth.login(request, user_obj)  # 登录用户
        else:
            # 用户验证失败
    

用户登录和登出

  1. login() 方法:给验证成功的用户加上 session,将 request.user 赋值为用户对象。

    • 参数:request,用户对象。
  2. logout() 方法:注销用户,清空 session 信息,将 request.user 赋值为匿名用户。

    • 参数:request,用户对象。
  3. 实例

    def login(request):
        # ...省略其他代码...
        if user_obj:
            auth.login(request, user_obj)
            # 重定向到用户尝试访问的页面或默认页面
            path = request.GET.get("next") or "/index/"
            return redirect(path)
        else:
            return redirect("/login/")
    
    def logout(request):
        auth.logout(request)
        return redirect("/login/")
    

装饰器使用

  1. login_required:装饰器,用于保护需要登录后才能访问的视图。

    • 使用前导入:
      from django.contrib.auth.decorators import login_required
      
  2. 实例

    @login_required
    def index(request):
        return HttpResponse("index页面。。。")
    

重定向未登录用户

Django在用户访问页面时,如果用户未登录,会自动重定向到登录页面,并携带next参数,该参数为用户原本尝试访问的页面URL。登录成功后,可以重定向回next参数指定的页面。

目录
相关文章
|
4月前
|
数据库 数据安全/隐私保护 Python
django 快速实现完整登录系统
django 快速实现完整登录系统
|
6月前
|
API 数据安全/隐私保护 网络架构
在django3中配置应用的权限
【6月更文挑战第9天】该文档介绍了Django REST Framework的权限管理。总结来说,本文介绍如何设置严格项目权限和如何通过自定义权限控制对特定资源的访问。
61 10
在django3中配置应用的权限
|
6月前
|
安全 API 数据安全/隐私保护
在django应用中使用权限控制
【6月更文挑战第6天】本文介绍在Django REST Framework中,项目权限通过默认设置如AllowAny、IsAuthenticated等管理。通过定制权限策略,确保了API的安全访问。
135 1
在django应用中使用权限控制
|
7月前
|
存储 缓存 中间件
如何在 Django中实现会话管理呢
如何在 Django中实现会话管理呢
56 0
|
存储 算法 测试技术
Django用户认证系统使用总结
Django用户认证系统使用总结
112 0
|
数据安全/隐私保护 Python
Django用户认证系统
.权限管理 Django利用auth_permission表定义权限 Permission表的定义非常简单,只有三个属性: name:权限显示的名称,最多允许255个字符 content_type:关联ContentType(记录App与model的信息) codename:权限的名称编码,最多允许100个字
125 0
Django用户认证系统
|
存储 前端开发 JavaScript
【Django学习笔记 - 6】:cookie的配置
【Django学习笔记 - 6】:cookie的配置
409 0
【Django学习笔记 - 6】:cookie的配置
|
Python 安全
Django配置介绍
Django的配置文件settings.py包含了基本上所有的Django安装的配置,这里解释下配置是如何生效的,还有有哪些可用的配置。 基础 配置文件是一个Python的模块,然后里面有一些模块级的变量。
|
中间件 Python 数据安全/隐私保护
详解Django的CSRF认证
1.csrf原理 csrf要求发送post,put或delete请求的时候,是先以get方式发送请求,服务端响应时会分配一个随机字符串给客户端,客户端第二次发送post,put或delete请求时携带上次分配的随机字符串到服务端进行校验 2.Django中的CSRF中间件 首先,我们知道Django中间件作用于整个项目。
1396 0
|
数据安全/隐私保护 Python 数据库
Django之路——11 Django用户认证组件 auth
用户认证  auth模块 1 from django.contrib import auth django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: 1.1 、authenticate()    提供了用户认证,即验证用户名以及密码是否正确,一般需要username  password两个关键字参数 如果认证信息有效,会返回一个  User  对象。
1727 0