如何使用Django默認的Auth權(quán)限管理系統(tǒng)
1.Django默認已經(jīng)提供了認證系統(tǒng)Auth模塊。
認證系統(tǒng)包含:
- 用戶管理
- 權(quán)限
- 用戶組
- 密碼哈希系統(tǒng)
- 用戶登錄或內(nèi)容顯示的表單和視圖
- 一個可插拔的后臺系統(tǒng) admin
Django默認用戶的認證機制依賴Session機制,我們在項目中將引入JWT認證機制,將用戶的身份憑據(jù)存放在Token中,然后對接Django的認證系統(tǒng),幫助我們來實現(xiàn):
- 用戶的數(shù)據(jù)模型
- 用戶密碼的加密與驗證
- 用戶的權(quán)限系統(tǒng)
auth存在的位置 External Libraries\site-packages\django\contrib\..
其中包括auth模塊和admin模塊.
2.Django用戶模型
Django認證系統(tǒng)中提供了用戶模型類User保存用戶的數(shù)據(jù),模型保存位置:D:\anaconda\Lib\site-packages\django\contrib\auth\models.py
,默認的User包含以下常見的基本字段:
字段名 | 字段描述 |
---|---|
username | 必選。150個字符以內(nèi)。 用戶名可能包含字母數(shù)字,_ ,@ ,+ . 和- 個字符。 |
first_name | 可選(blank=True )。 少于等于30個字符。 |
last_name | 可選(blank=True )。 少于等于30個字符。 |
email | 可選(blank=True )。 郵箱地址。 |
password | 必選。 密碼的哈希加密串。 (Django 不保存原始密碼)。 原始密碼可以無限長而且可以包含任意字符。 |
groups | 與Group 之間的多對多關系。 |
user_permissions | 與Permission 之間的多對多關系。 |
is_staff | 布爾值。 設置用戶是否可以訪問Admin 站點。 |
is_active | 布爾值。 指示用戶的賬號是否激活。 它不是用來控制用戶是否能夠登錄,而是描述一種帳號的使用狀態(tài)。 |
is_superuser | 是否是超級用戶。超級用戶具有所有權(quán)限。 |
last_login | 用戶最后一次登錄的時間。 |
date_joined | 賬戶創(chuàng)建的時間。 當賬號創(chuàng)建時,默認設置為當前的date/time。 |
常用方法:
set_password
(raw_password)
設置用戶的密碼為給定的原始字符串,并負責密碼的。 不會保存User
對象。當None
為raw_password
時,密碼將設置為一個不可用的密碼。
check_password
(raw_password)
如果給定的raw_password是用戶的真實密碼,則返回True,可以在校驗用戶密碼時使用。
管理器方法:
管理器方法即可以通過User.objects.
進行調(diào)用的方法。
create_user
(username, email=None, password=None, **extra_fields)
創(chuàng)建、保存并返回一個User
對象。
create_superuser
(username, email, password, **extra_fields)
與create_user()
相同,但是設置is_staff
和is_superuser
為True
。
3.自定義User對象
因為系統(tǒng)默認自帶的user對象很多屬性和功能并不是我自己需要的,所以需要我們自己重新定義一個user對象.
第一步:創(chuàng)建一個user app
python manage.py startapp user
創(chuàng)建自定義user對象models.py
from django.db import models from django.contrib.auth.models import AbstractUser # Create your models here. class user(AbstractUser): # 聲明自定義user對象 mobile=models.CharField(max_length=11,unique=True,verbose_name="手機號碼") avatar=models.ImageField(upload_to="avatar",verbose_name="用戶頭像") class Mata: db_table="user" verbose_name="用戶信息" verbose_name_plural=verbose_name
第二步:配置相關信息
進入主app下面的setting
文件中
注冊userapp
注冊自定義模型
第三步:執(zhí)行數(shù)據(jù)遷移
注意事項:如果是在第一次數(shù)據(jù)遷移之后,猜設置的AUTH_USER_MODEL自定義模型則會報錯,解決方法如下:
- 先把現(xiàn)有的數(shù)據(jù)庫導出備份,然后清掉數(shù)據(jù)庫中所有的數(shù)據(jù)表。
- 把開發(fā)者創(chuà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ù),以后如果要修改用戶相關數(shù)據(jù),不需要重復本次操作,直接數(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
到此這篇關于如何使用Django默認的Auth權(quán)限管理系統(tǒng)的文章就介紹到這了,更多相關Django Auth權(quán)限管理系統(tǒng)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
11個Python Pandas小技巧讓你的工作更高效(附代碼實例)
這篇文章主要介紹了11個Python Pandas小技巧讓你的工作更高效(附代碼實例),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-04-04python串口如何讀取byte類型數(shù)據(jù)并訪問
這篇文章主要介紹了python串口如何讀取byte類型數(shù)據(jù)并訪問方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09tensorflow 20:搭網(wǎng)絡,導出模型,運行模型的實例
這篇文章主要介紹了tensorflow 20:搭網(wǎng)絡,導出模型,運行模型的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05tensorflow獲取預訓練模型某層參數(shù)并賦值到當前網(wǎng)絡指定層方式
今天小編就為大家分享一篇tensorflow獲取預訓練模型某層參數(shù)并賦值到當前網(wǎng)絡指定層方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01