Django 用户认证系统
  TEZNKK3IfmPf 2023年11月14日 25 0
 

一、用户认证系统

Django内置一个用户认证系统,使用auth模块实现。

auth模块提供了登录、注册、效验、修改密码、注销、验证用户是否登录等功能。
Django 用户认证系统

1.1.Django默认创建的数据库表

• auth_user :用户表
• auth_user_groups :用户所属组的表
• auth_user_user_permissions :用户权限表
• auth_group :用户组表
• auth_group_permissions :用户组权限表
• auth_permission :存放全部权限的表,其他的表的权限都是从此表中外键连接过去的

• django_session :保存HTTP状态
• django_migrations :数据库迁移记录

二、auth模块

登录Django后台管理系统,创建devops用户,用于后面的测试
Django 用户认证系统
Django 用户认证系统

2.1.login()

登录成功,跳转到首页

views.py:

from django.contrib import auth
def login(request):
    if request.method == "GET":
        return render(request, 'login.html')
    elif request.method == "POST":
        # 获取前端登录的用户名和密码
        username = request.POST.get('username', None)
        password = request.POST.get('password', None)
        # 对用户身份验证
        user = auth.authenticate(username=username, password=password)  #验证通过返回用户对象,验证失败返回None
        if user:
            auth.login(request, user)   # 将request与用户对象(包含session)传给login()函数
            return redirect(index)      # 重定向到函数名,这里是首页
        else:
            msg = "用户名或密码输入错误"
            return render(request, 'login.html', {
     
       "msg": msg})

login.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录页面</title>
</head>
<body>
    <h1>欢迎访问管理系统</h1>
    <form action="" method="post">
        用户名: <input type="text", name="username"><br>    <!--输入的用户名保存到username变量,传回后端-->
        密码: <input type="text", name="password"><br>
        <button type="submit">登录</button><br>
    </form>
    <span style="color: red">{
    
      { msg }}</span>
</body>
</html>

2.2.logout()

views.py:

from django.contrib.auth import login,logout
def logout(request):
    auth.logout(request)    # 清除当前用户的session信息
    return redirect(login)

2.3.login_required装饰器

login_required装饰器:判断用户是否登录,如果没有登录引导至登录页面,登录成功后跳转到目的页面。

views.py:

from django.contrib.auth.decorators import login_required

@login_required()
def index(request):
    return render(request, 'index.html')

index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>
    <h1>欢迎访问首页</h1>
    <a href="/myldp/logout/">退出</a>
</body>
</html>

在settings.py文件设置没有登录默认跳转页面:

LOGIN_URL = '/myldp/login/'

Django 用户认证系统

2.4.效果图

Django 用户认证系统
Django 用户认证系统

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年03月29日   61   0   0 djangopython
  TEZNKK3IfmPf   2023年11月15日   22   0   0 django
  TEZNKK3IfmPf   2023年11月15日   25   0   0 django时间
  TEZNKK3IfmPf   2023年11月15日   279   0   0 djangosearch
  TEZNKK3IfmPf   2023年11月14日   154   0   0 djangoorm
  TEZNKK3IfmPf   2023年11月15日   35   0   0 djangopython
TEZNKK3IfmPf