zoukankan      html  css  js  c++  java
  • 用户认证--------------auth模块

    auth模块要让自己的用户表继承auth一定要在setting里面写上AUTH_USER_MODEL="app名字.用户表名"





    其实auth模块本意上也是设置session

    用户认证是在你的django中执行了orm的数据库的迁移和生成后就会在你的数据库中自动生成一个用户认证的表 这个表存储的是你auth要提取的信息

    首先views中导入下面语句
    from django.contrib import auth


    django.contrib.auth中提供了许多方法,这里主要介绍其中的三个:

    其实你的用户验证的组件会调用你的django中user表 然后对这个表中你要先存数据

    from django.contrib.auth.models import User  #导入你的dgango中的user表
    def adduser(request):
        User.objects.create_user(username = 'laoliu',password=123456)  #运用create_user创建密文密码
        return redirect('/login/')

    先导入数据库  然后运用create_user进行创建  如果直接使用create创建的是明文密码

    auth.authenticate:

    自动判断模块  可以判断你提交的信息是不是和user表中的内容是否相同

    autho.login() 这一步相当于设置session的值

    auth.login(request,user)   设置session的值user

    设置完成后request.user就是全局的变量了直接可以随意随时随地的使用request.user进行取值

    is_authenticated  是来判断你的设置的内容是否有值的

    if not request.user.is_authenticated:  #相当于如果没有设置session的值 从request.user中没有取到值

    你的auth.login(request,'设置的内容')

    然后你就可以根据你设置的内容全局去取

    auth.login(request,user)
    
    request.user就可以全局去取整个django都可以取到

    注销:

    autho.logout(request)  

    注销就相当于session.flush()

    实现一个简单的用户登陆注销:

    url:

    from django.contrib import admin
    from django.urls import path
    from one import views
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('login/',views.login,name = 'login'),
        path('index/' ,views.index, name='index' ),
        path('add/',views.adduser, name='add'),
        path('logout/',views.logout)
    ]
    复制代码
    from django.contrib import admin
    from django.urls import path
    from one import views
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('login/',views.login,name = 'login'),
        path('index/' ,views.index, name='index' ),
        path('add/',views.adduser, name='add'),
        path('logout/',views.logout)
    ]
    复制代码

    views:

    复制代码
    from django.shortcuts import render,redirect,HttpResponse,reverse
    
    # Create your views here.
    
    
    from django.contrib import auth
    
    
    
    def login(request):
        if request.method == 'POST':
            user = request.POST.get('user')
            pwd = request.POST.get('pwd')
    
    
            # 上面获取到用户名之后会自动的用auth.authenticate来进行验证
            # user = auth.authenticate(uaername = user)
            user = auth.authenticate(username = user,password = pwd)
            if user:
                auth.login(request,user)  #auth.login返回的是一个全局的变量 这一步就是一个设置session的值
                return redirect('/index/')
        return render(request,'login.html')
    
    
    
    
    def index(request):
        if not request.user.is_authenticated:  #相当于如果没有设置session的值 从request.user中没有取到值
            return redirect(reverse('/login/'))
        return render(request,'index.html')
    
    
    
    
    def logout(request):
    
        auth.logout()  #这一步就相当于直接session.flush()
        return redirect('/login/')
    
    
    from django.contrib.auth.models import User  #导入你的dgango中的user表
    def adduser(request):
        User.objects.create_user(username = 'laoliu',password=123456)  #运用create_user创建密文密码
        return redirect('/login/')
    复制代码

    前端:

    login:登陆界面:

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    </head>
    <body>
    <form action="" method = 'post'>


    {% csrf_token %}
    用户名 <input type="text" name="user">
    密码: <input type="password" name="pwd">
    <input type="submit" value="提交">
    </form>

    </body>
    </html>

    login

    复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <form action="" method = 'post'>
    
    
        {% csrf_token %}
        用户名 <input type="text" name="user">
        密码: <input type="password" name="pwd">
        <input type="submit" value="提交">
    </form>
    
    </body>
    </html>
    复制代码

    index界面:

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    </head>
    <body>

    <h3>{{ request.user.username }}</h3> <a href="/logout/">注销</a>


    </body>
    </html>

    复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    
    <h3>{{ request.user.username }}</h3>  <a href="/logout/">注销</a>
    
    
    
    
    </body>
    </html>
  • 相关阅读:
    【转】想成为为一名架构师,应该掌握哪些技术呢?
    【转】每个好架构师都是一位出色的程序员
    [LeetCode] 597. Friend Requests I: Overall Acceptance Rate 朋友请求 I: 全部的接受率
    [LeetCode]577. Employee Bonus 员工奖金
    570. Managers with at Least 5 Direct Reports 至少有5个直接汇报员工的经理
    [LeetCode] 529. Minesweeper 扫雷
    Generate Maximum revenue by selling K tickets from N windows
    [LeetCode] 311. Sparse Matrix Multiplication 稀疏矩阵相乘
    [LeetCode] 689. Maximum Sum of 3 Non-Overlapping Subarrays 三个非重叠子数组的最大和
    [LeetCode] 403. Frog Jump 青蛙跳
  • 原文地址:https://www.cnblogs.com/qunxiadexiaoxiangjiao/p/9287546.html
Copyright © 2011-2022 走看看