国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

django認證系統實現自定義權限管理的方法

2020-02-15 22:24:00
字體:
來源:轉載
供稿:網友

本文記錄使用django自帶的認證系統實現自定義的權限管理系統,包含組權限、用戶權限等實現。

0x01. django認證系統

django自帶的認證系統能夠很好的實現如登錄、登出、創建用戶、創建超級用戶、修改密碼等復雜操作,并且實現了用戶組、組權限、用戶權限等復雜結構,使用自帶的認證系統就能幫助我們實現自定義的權限系統達到權限控制的目的。

0x02. 認證系統User對象

User對象顧名思義即為表示用戶的對象,里面的屬性包括:

    username password email first_name last_name is_superuser is_active

創建好對象后,django會自動生成表,表名為auth_user,包含以上字段。具體的api文檔如下所示:

class models.User

User 對象具有如下字段:

username
必選。少于等于30個字符。 用戶名可以包含字母、數字、_、@、+、.和- 字符。

first_name
可選。 少于等于30個字符。

last_name
可選。少于30個字符。

email
可選。郵箱地址。

password
必選。 密碼的哈希及元數據。(Django 不保存原始密碼)。原始密碼可以無限長而且可以包含任意字符。參見密碼相關的文檔。

groups
與Group 之間的多對多關系。

user_permissions
與Permission 之間的多對多關系。

is_staff
布爾值。指示用戶是否可以訪問Admin 站點。

is_active
布爾值。指示用戶的賬號是否激活。

is_superuser
布爾值。只是這個用戶擁有所有的權限而不需要給他們分配明確的權限。

last_login
用戶最后一次登錄的時間。

date_joined
賬戶創建的時間。當賬號創建時,默認設置為當前的date/time。

一般在注冊操作中會用到該方法,實現注冊一個用戶,用到的函數是User.objects.create_user(),在新建用戶的時候需要判斷用戶是否存在,我的實現方式是,User.objects.get(username=xxx)去獲取一個用戶User對象,用try except實現,如果用戶不存在則拋出User.DoesNotExist異常,在這個異常中進行創建用戶的操作。具體代碼如下:

# 注冊操作from django.contrib.auth.models import Usertry: User.objects.get(username=username) data = {'code': '-7', 'info': u'用戶已存在'}except User.DoesNotExist: user = User.objects.create_user(username, email, password) if user is not None:  user.is_active = False  user.save()

該過程中密碼字段會自動加密存儲。無需關注過多細節。

0x03. 登錄登出用戶

創建好用戶后,就是登錄及登出了,django認證系統提供了login()logout()函數,能夠自動登錄登出,并且修改session值,非常方便。驗證用戶身份使用

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 昭平县| 龙门县| 汕头市| 宜都市| 大埔县| 古浪县| 廉江市| 磴口县| 通河县| 綦江县| 屏山县| 达日县| SHOW| 昌平区| 墨竹工卡县| 宁陵县| 稻城县| 新民市| 洛隆县| 东明县| 凉城县| 北京市| 灵川县| 平陆县| 南乐县| 乃东县| 贵德县| 临沧市| 清河县| 鸡西市| 浑源县| 平泉县| 松原市| 海城市| 开阳县| 新民市| 云阳县| 开原市| 永安市| 江门市| 南丰县|