欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
python測試開(kāi)發(fā)django-42.auth模塊登陸認證

前言

在開(kāi)發(fā)一個(gè)網(wǎng)站時(shí),經(jīng)常會(huì )用到用戶(hù)的注冊和登陸相關(guān)的賬號管理功能,auth模塊是Django提供的標準權限管理系統,可以提供用戶(hù)身份認證, 用戶(hù)組和權限管理。
像用戶(hù)注冊、用戶(hù)登錄、用戶(hù)認證、注銷(xiāo)、修改密碼等功能都不需要我們去開(kāi)發(fā),這些功能django已經(jīng)早就設計好了。

auth模塊

當我們執行makemigrations和migrate數據庫遷移的時(shí)候,會(huì )自動(dòng)新增一個(gè)auth_user表,用戶(hù)存放用戶(hù)賬號密碼等相關(guān)信息。
創(chuàng )建超級管理員用戶(hù)python manage.py createsuperuser的時(shí)候,會(huì )在表里面寫(xiě)入管理員的賬號、密碼、郵箱等相關(guān)信息,如下圖

這里我的賬號是root,密碼是root,很顯然存在數據庫的密碼不是明文的,而是加密后的

認證authenticate()

前面注冊的root賬號是在auth_user表里面,所以需導入對應的User表,這里密碼不是明文的,有個(gè)專(zhuān)門(mén)的方法authenticate判斷是否登錄成功

from django.contrib.auth import authenticate

> python manage.py shell
>>> from django.contrib.auth.models import User
>>> from django.contrib.auth import authenticate

# 輸入正確賬號,密碼,user返回root用戶(hù)對象
>>> user=authenticate(username='root',password='root')
>>> user
<User: root>

# 輸入錯誤的密碼,user返回為空
>>> user=authenticate(username='root',password='xxxx')
>>> user
>>>

authenticate認證用戶(hù)的密碼是否有效, 若有效則返回代表該用戶(hù)的user對象, 若無(wú)效則返回None

注冊create_user

注冊用戶(hù)可以直接使用create_user方法,非常方便,前面說(shuō)過(guò)密碼是加密后的,這里使用create_user方法新增用戶(hù)會(huì )自動(dòng)加密存儲到數據庫了

> python manage.py shell
>>> from django.contrib.auth.models import User
>>> from django.contrib.auth import authenticate

# 新增用戶(hù)test.密碼test
>>> user1=User.objects.create_user(username='test',password='test',email='283340479@qq.com')
>>> user1.save()
>>>

save保存后,數據庫查看auth_user表新增成功

修改密碼set_password

當我們需要修改密碼的時(shí)候,可以用set_password方法,該方法不驗證用戶(hù)的身份,直接修改,一般在已經(jīng)登陸的時(shí)候,修改密碼使用

> python manage.py shell
>>> from django.contrib.auth.models import User
>>> from django.contrib.auth import authenticate
>>> user=authenticate(username='test',password='test')

# 設置新密碼
>>> user.set_password('123456')
>>> user.save()

# 修改成功后使用新密碼登陸
>>> user=authenticate(username='test',password='test')
>>> user.set_password('123456')

當密碼錯誤的時(shí)候,user返回為空,使用user.set_password('123456’)會(huì )直接拋異常,所以修改密碼的時(shí)候,一般先判斷下

>>> user=authenticate(username='test',password='test')
# 密碼不對,user為空拋異常
>>> user.set_password('123456')
Traceback (most recent call last):
File "<console>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'set_password'

# 加判斷
>>> user=authenticate(username='test',password='test')
>>> user
>>> if user is not None:
... user.set_password('123456')
... user.save()
...
>>>

登陸login

用戶(hù)登陸功能,有給專(zhuān)門(mén)的login函數,它可以在session中添加SESSION_KEY

from django.contrib.auth import login

login(request, user)傳2個(gè)參數,request和user參數,這里不需要傳密碼,需配合authenticate(username=username, password=password)先校驗賬號和密碼是否成功

login(request, user)

登陸之前還有個(gè)is_active判斷, is_active是判斷用戶(hù)是否可以用,當它為is_active的時(shí)候(True),用戶(hù)可以正常登陸,當is_active為0(False),用戶(hù)不可用,相當于拉入黑名單

from django.contrib.auth import login, authenticate

def login_view(request):
'''session登陸'''
user = authenticate(username='test', password='test')
if user is not None:
if user.is_active:
login(request, user)

退出登陸

logout會(huì )清除request中的user信息, 并刷新session

from django.contrib.auth import logout

def logout_view(request):
'''退出登陸'''
logout(request)

2019年《python3接口自動(dòng)化》課程3月17-4月14開(kāi)課
主講老師:上海-悠悠
上課方式:QQ群視頻在線(xiàn)教學(xué)
上課時(shí)間:每周六、周日晚上20:30-22:30
報名費:1000

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
自定義Django認證系統的技術(shù)方案
Django——auth
Django學(xué)習筆記(2)
使用Django實(shí)現微信公眾號用戶(hù)openid登錄認證(示例代碼)
Django集成已有的數據庫和應用
JWT-配置與使用
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久