如何使用Django默認(rèn)的Auth權(quán)限管理系統(tǒng)
1.Django默認(rèn)已經(jīng)提供了認(rèn)證系統(tǒng)Auth模塊。
認(rèn)證系統(tǒng)包含:
- 用戶管理
- 權(quán)限
- 用戶組
- 密碼哈希系統(tǒng)
- 用戶登錄或內(nèi)容顯示的表單和視圖
- 一個(gè)可插拔的后臺(tái)系統(tǒng) admin
Django默認(rèn)用戶的認(rèn)證機(jī)制依賴Session機(jī)制,我們?cè)陧?xiàng)目中將引入JWT認(rèn)證機(jī)制,將用戶的身份憑據(jù)存放在Token中,然后對(duì)接Django的認(rèn)證系統(tǒng),幫助我們來實(shí)現(xiàn):
- 用戶的數(shù)據(jù)模型
- 用戶密碼的加密與驗(yàn)證
- 用戶的權(quán)限系統(tǒng)
auth存在的位置 External Libraries\site-packages\django\contrib\..其中包括auth模塊和admin模塊.
2.Django用戶模型
Django認(rèn)證系統(tǒng)中提供了用戶模型類User保存用戶的數(shù)據(jù),模型保存位置:D:\anaconda\Lib\site-packages\django\contrib\auth\models.py,默認(rèn)的User包含以下常見的基本字段:
| 字段名 | 字段描述 |
|---|---|
username | 必選。150個(gè)字符以內(nèi)。 用戶名可能包含字母數(shù)字,_,@,+ . 和-個(gè)字符。 |
first_name | 可選(blank=True)。 少于等于30個(gè)字符。 |
last_name | 可選(blank=True)。 少于等于30個(gè)字符。 |
email | 可選(blank=True)。 郵箱地址。 |
password | 必選。 密碼的哈希加密串。 (Django 不保存原始密碼)。 原始密碼可以無限長而且可以包含任意字符。 |
groups | 與Group 之間的多對(duì)多關(guān)系。 |
user_permissions | 與Permission 之間的多對(duì)多關(guān)系。 |
is_staff | 布爾值。 設(shè)置用戶是否可以訪問Admin 站點(diǎn)。 |
is_active | 布爾值。 指示用戶的賬號(hào)是否激活。 它不是用來控制用戶是否能夠登錄,而是描述一種帳號(hào)的使用狀態(tài)。 |
is_superuser | 是否是超級(jí)用戶。超級(jí)用戶具有所有權(quán)限。 |
last_login | 用戶最后一次登錄的時(shí)間。 |
date_joined | 賬戶創(chuàng)建的時(shí)間。 當(dāng)賬號(hào)創(chuàng)建時(shí),默認(rèn)設(shè)置為當(dāng)前的date/time。 |
常用方法:
set_password(raw_password)
設(shè)置用戶的密碼為給定的原始字符串,并負(fù)責(zé)密碼的。 不會(huì)保存User 對(duì)象。當(dāng)None為raw_password 時(shí),密碼將設(shè)置為一個(gè)不可用的密碼。
check_password(raw_password)
如果給定的raw_password是用戶的真實(shí)密碼,則返回True,可以在校驗(yàn)用戶密碼時(shí)使用。
管理器方法:
管理器方法即可以通過User.objects. 進(jìn)行調(diào)用的方法。
create_user(username, email=None, password=None, **extra_fields)
創(chuàng)建、保存并返回一個(gè)User對(duì)象。
create_superuser(username, email, password, **extra_fields)
與create_user() 相同,但是設(shè)置is_staff 和is_superuser 為True。
3.自定義User對(duì)象
因?yàn)橄到y(tǒng)默認(rèn)自帶的user對(duì)象很多屬性和功能并不是我自己需要的,所以需要我們自己重新定義一個(gè)user對(duì)象.
第一步:創(chuàng)建一個(gè)user app
python manage.py startapp user
創(chuàng)建自定義user對(duì)象models.py
from django.db import models
from django.contrib.auth.models import AbstractUser
# Create your models here.
class user(AbstractUser):
# 聲明自定義user對(duì)象
mobile=models.CharField(max_length=11,unique=True,verbose_name="手機(jī)號(hào)碼")
avatar=models.ImageField(upload_to="avatar",verbose_name="用戶頭像")
class Mata:
db_table="user"
verbose_name="用戶信息"
verbose_name_plural=verbose_name
第二步:配置相關(guān)信息
進(jìn)入主app下面的setting文件中
注冊(cè)u(píng)serapp

注冊(cè)自定義模型

第三步:執(zhí)行數(shù)據(jù)遷移
注意事項(xiàng):如果是在第一次數(shù)據(jù)遷移之后,猜設(shè)置的AUTH_USER_MODEL自定義模型則會(huì)報(bào)錯(cuò),解決方法如下:
- 先把現(xiàn)有的數(shù)據(jù)庫導(dǎo)出備份,然后清掉數(shù)據(jù)庫中所有的數(shù)據(jù)表。
- 把開發(fā)者創(chuàng)建的所有子應(yīng)用下面的migrations目錄下除了__init__.py以外的所有遷移文件,只要涉及到用戶的,一律刪除
- 把django.contrib.admin.migrations目錄下除了__init__.py以外的所有遷移文件,全部刪除。
- 把django.contrib.auth.migrations目錄下除了__init__.py以外的所有遷移文件,全部刪除。
- 把reversion.migrations目錄下除了__init__.py以外的所有遷移文件,全部刪除。
- 把xadmin.migrations目錄下除了__init__.py以外的所有遷移文件,全部刪除。
- 接下來,執(zhí)行數(shù)據(jù)遷移,回顧第0步中的數(shù)據(jù),以后如果要修改用戶相關(guān)數(shù)據(jù),不需要重復(fù)本次操作,直接數(shù)據(jù)遷移即可。
刪除表

刪除user.migrations目錄下除了__init__.py以外的所有遷移文件,只要涉及到用戶的,一律刪除

把django.contrib.admin.migrations,django.contrib.auth.migrations,reversion.migrations,xadmin.migrations目錄下除了__init__.py以外的所有遷移文件,全部刪除

* 執(zhí)行數(shù)據(jù)遷移
在terminal中執(zhí)行:
python manage.py makemigrations python manage.py migrate
到此這篇關(guān)于如何使用Django默認(rèn)的Auth權(quán)限管理系統(tǒng)的文章就介紹到這了,更多相關(guān)Django Auth權(quán)限管理系統(tǒng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
11個(gè)Python Pandas小技巧讓你的工作更高效(附代碼實(shí)例)
這篇文章主要介紹了11個(gè)Python Pandas小技巧讓你的工作更高效(附代碼實(shí)例),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-04-04
python串口如何讀取byte類型數(shù)據(jù)并訪問
這篇文章主要介紹了python串口如何讀取byte類型數(shù)據(jù)并訪問方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
Python簡(jiǎn)單實(shí)現(xiàn)控制電腦的方法
這篇文章主要介紹了Python簡(jiǎn)單實(shí)現(xiàn)控制電腦的方法,涉及Python基于os及win32api等模塊調(diào)用系統(tǒng)命令操作電腦的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-01-01
tensorflow 20:搭網(wǎng)絡(luò),導(dǎo)出模型,運(yùn)行模型的實(shí)例
這篇文章主要介紹了tensorflow 20:搭網(wǎng)絡(luò),導(dǎo)出模型,運(yùn)行模型的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-05-05
python中print的不換行即時(shí)輸出的快速解決方法
下面小編就為大家?guī)硪黄猵ython中print的不換行即時(shí)輸出的快速解決方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考2016-07-07
tensorflow獲取預(yù)訓(xùn)練模型某層參數(shù)并賦值到當(dāng)前網(wǎng)絡(luò)指定層方式
今天小編就為大家分享一篇tensorflow獲取預(yù)訓(xùn)練模型某層參數(shù)并賦值到當(dāng)前網(wǎng)絡(luò)指定層方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-01-01
在python里協(xié)程使用同步鎖Lock的實(shí)例
今天小編就為大家分享一篇在python里協(xié)程使用同步鎖Lock的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-02-02

