日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Auth模块

發(fā)布時間:2023/12/13 综合教程 29 生活家
生活随笔 收集整理的這篇文章主要介紹了 Auth模块 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一.Auth模塊是干什么的

它是Django自帶的一個強大的用戶認證的模塊,用戶系統(tǒng)相關的功能,注冊登錄,用戶認證,注銷,修改密碼.

二.Auth模塊常用的有哪些方法?

介紹方法之前先寫一個功能通過功能來更好的認識Auth模塊

創(chuàng)建炒雞用戶,用來登陸django admin的后臺管理

createsuperuser

密碼輸入大于8位,Django中創(chuàng)建用戶的時候默認的密碼字節(jié)數(shù)量是大于8位的.

模塊導入

from django.contrip import auth

搭建好html文件

登錄

先放完整代碼

from django.shortcuts import render.HttpResponse,redirect
from djang.contrip import auth
def login(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        # models.User.objects.filter(username=username,password=password).first()
        # user_obj = auth.authenticate(username=username,password=password)
        # user_obj = auth.authenticate(username=username)
        # is_alive = User.objects.filter(username=username)
        #
        # print(is_alive)
        # print(is_alive.first().password)
        """
        該方法會有一個返回值  當條件存在的情況下 返回就是數(shù)據(jù)對象本身
        條件不滿足 直接返回None
        """
        # if user_obj:
        #     print(user_obj)
        #     print(user_obj.username)
        #     print(user_obj.password)
        #     # 一定要記錄用戶狀態(tài) 才算真正的用戶登錄
        #     # request.session['user'] = user_obj
        #     auth.login(request,user_obj)
        #     """該方法會主動幫你操作session表 并且只要執(zhí)行了該方法
        #     你就可以在任何位置通過request.user獲取到當前登錄的用戶對象
        #     """
        #     old_path = request.GET.get('next')
        #     if old_path:
        #         return redirect(old_path)
        #     else:
        #         return redirect('/home/')
    return render(request,'login.html')
        

1.authenticate()認證

提供用戶認證功能,直接去數(shù)據(jù)找真實數(shù)據(jù)驗證跟用戶輸入的用戶名以及密碼是否正確,如果認證成功則返回一個數(shù)據(jù)對象,認證失敗就返回None.一般需要username,password兩個關鍵字參數(shù)

配置{% csrf_token %}即可

2.login(request,user) 保存登錄狀態(tài)

改函數(shù)接受request,以及經(jīng)過認證后的存在user對象,這個函數(shù)會在后端為這個用戶生成相關的session數(shù)據(jù). 而知執(zhí)行完之后只要能拿到request的地方都能通過request.user獲取到當前登錄用戶的對象.

3.is_authenticated()

判斷當前的用戶是否通過了認證.

4.logout(request)退出登錄

該函數(shù)沒有返回值,調(diào)用這個函數(shù),請求的session信息會全部清除,而且使用這個函數(shù)也不會報錯.

from django.contrib.auth import logout

def logout_view(request):
    logout(request)
    # Redirect to a success page.

5.login_required()校驗裝飾器

裝飾器工具,快捷給FBV視圖添加登錄校驗.

在用戶沒有登陸的情況下跳轉的url有全局配置和局部配置

在裝飾器括號內(nèi)通過login_url參數(shù)局部指定跳轉url

全局配置的話,用戶沒有登錄的情況下,所有的視圖統(tǒng)一跳轉到一個url配置文件中

form django.contrip.decorators import login_required
#@login_required(login_url='/xxx/') # 局部配置
@login_required# 全局配置
def my_view(request):
    ...

CBV視圖添加登錄校驗

from django.contrib.auth.decorators import login_required
from django.utils.decorators import method_decorator

class Home(views.View):

    @method_decorator(login_required)
    def get(self, request):
        return render(request, 'home.html')

6.check_password(password) 與set_password(password='') 檢驗設置密碼

檢驗密碼是否正確的方法,返回bool值

rt = user.check_password()

修改密碼,設置完一定要保存密碼(新密碼也可以為對象)

user.set_password(password=new_password)
user.save()

7.用戶注冊

from djang.contrip.auth.models import User

使用create會密碼直接存成明文

User.objects.create(username=username,password=password)

創(chuàng)建普通用戶是加密的

User.objects.create_user(username=username,password=password)

創(chuàng)建炒雞用戶,郵箱必須填寫

        User.objects.create_superuser(username=username,password=password,email='123321@qq.com')  

三.User對象的屬性

username,password

is_staff : 用戶是否擁有網(wǎng)站的管理權限.

is_active : 是否允許用戶登錄, 設置為 False,可以在不刪除用戶的前提下禁止用戶登錄

四.擴展默認表auth_user的字段

雖然django自帶的auth模塊很好用,但是他默認創(chuàng)建的auth_user表我們不能對其進行操作,那么怎么才能既可以使用auth簡便的功能又可以進行表內(nèi)字段的修改,擴展呢?

這時候我們就應該想到使用繼承,類的三大特性之一.操作如下

繼承

寫一個默認類繼承原來的auth_user類(自定義的表中字段不能跟原有的字段沖突)

告訴Django使用新建的類(在settings配置文件中)替代auth_user表

總結

以上是生活随笔為你收集整理的Auth模块的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。