Auth模塊

一.Auth模塊是幹什麼的

它是Django自帶的一個強大的用戶認證的模塊,用戶系統相關的功能,註冊登陸,用戶認證,註銷,修改密碼.html

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

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

建立炒雞用戶,用來登錄django admin的後臺管理django

createsuperuser

密碼輸入大於8位,Django中建立用戶的時候默認的密碼字節數量是大於8位的.後端

模塊導入session

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)
        """
        該方法會有一個返回值  當條件存在的狀況下 返回就是數據對象自己
        條件不知足 直接返回None
        """
        # if user_obj:
        #     print(user_obj)
        #     print(user_obj.username)
        #     print(user_obj.password)
        #     # 必定要記錄用戶狀態 纔算真正的用戶登陸
        #     # request.session['user'] = user_obj
        #     auth.login(request,user_obj)
        #     """該方法會主動幫你操做session表 而且只要執行了該方法
        #     你就能夠在任何位置經過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()認證

提供用戶認證功能,直接去數據找真實數據驗證跟用戶輸入的用戶名以及密碼是否正確,若是認證成功則返回一個數據對象,認證失敗就返回None.通常須要username,password兩個關鍵字參數
網站

配置{% csrf_token %}便可ui

2.login(request,user) 保存登陸狀態

改函數接受request,以及通過認證後的存在user對象,這個函數會在後端爲這個用戶生成相關的session數據. 而知執行完以後只要能拿到request的地方都能經過request.user獲取到當前登陸用戶的對象.加密

3.is_authenticated()

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

4.logout(request)退出登陸

該函數沒有返回值,調用這個函數,請求的session信息會所有清除,並且使用這個函數也不會報錯.

from django.contrib.auth import logout

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

5.login_required()校驗裝飾器

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

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

  1. 在裝飾器括號內經過login_url參數局部指定跳轉url

  2. 全局配置的話,用戶沒有登陸的狀況下,全部的視圖統一跳轉到一個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)

建立普通用戶是加密的

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

建立炒雞用戶,郵箱必須填寫

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

三.User對象的屬性

username,password

is_staff : 用戶是否擁有網站的管理權限.

is_active : 是否容許用戶登陸, 設置爲 False,能夠在不刪除用戶的前提下禁止用戶登陸

四.擴展默認表auth_user的字段

雖然django自帶的auth模塊很好用,可是他默認建立的auth_user表咱們不能對其進行操做,那麼怎麼才能既可使用auth簡便的功能又能夠進行表內字段的修改,擴展呢?

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

繼承

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

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

相關文章
相關標籤/搜索