Django中的使用者認證系統

2021-10-03 05:45:47 字數 3240 閱讀 5478

auth模組是django提供的標準許可權管理系統,可以提供使用者身份認證, 使用者組和許可權管理。

django 內建了user模型,包含了username,password,email等字段資訊。但是實際使用時,可能會包含一些其他的字段資訊,例如手機號,頭像,簽名資訊等。此時需要在系統的user模型上進行拓展。

應用目錄下的models.py

注意,需要繼承abstractuser類。

class

user

(abstractuser)

: phones = models.charfield(max_length=

50, null=

true

)class

meta

: db_table =

'user'

此時,新增了乙個手機號的字段。

settings.py中新增配置

auth_user_model =
進行資料庫遷移

python manage.py makemigrations

python manage.py migrate

應用下的urls.py

urlpatterns =

[ path(

'register/'

, views.register, name=

'register'),

path(

'login/'

, views.user_login, name=

'login'),

path(

'index/'

, views.index, name=

'index'),

path(

'logout/'

, views.user_logout, name=

'logout'),

path(

'withdraw/'

, views.withdraw, name=

'withdraw'),

]建立使用者

def

register

(request)

:if request.method ==

'post'

: username = request.post.get(

'username'

) password = request.post.get(

'password'

) email = request.post.get(

'email'

) user = user.objects.

filter

(username=username)

.first(

)if user:

return render(request,

, context=

)else

: user.objects.create_user(username=username, password=password, email=email)

return redirect(reverse())

return render(request,

)

驗證登入

記住使用者的登入狀態

def

user_login

(request)

:if request.method ==

'post'

: username = request.post.get(

'username'

) password = request.post.get(

'password'

)print

(username, password)

# 驗證登入,判斷資料庫中是否存在使用者輸入的賬號和密碼,返回乙個user物件

user = authenticate(request, username=username, password=password)

print

(user,

type

(user)

)if user:

# 記住使用者的登入狀態,給已認證的使用者附加sessionid等資訊

login(request, user)

return redirect(reverse())

else

:return redirect(reverse())

return render(request,

)

判斷使用者是否登入

前端通過isauthenticated資訊判斷是否登入,true表示已登入,false表示未登入。

def

index

(request)

:return render(request,

)

index.html

welcome

}>exit<

/a>

<

/p>

please >login<

/a>

<

/p>

<

/body>

退出登入

def

user_logout

(request)

:# 使用者登出

logout(request)

return redirect(reverse(

))

判斷使用者是否登入的裝飾器

只有使用者處於登入狀態才能進行操作。

@login_required 修飾器修飾的view函式會先通過session key檢查是否登入,已登入使用者可以正常的執行操作,未登入使用者將被重定向到login_url指定的位置。若未指定login_url引數,則重定向到settings.login_url。

Django 使用者認證系統

二 auth模組 django內建乙個使用者認證系統,使用auth模組實現。auth模組提供了登入 註冊 效驗 修改密碼 登出 驗證使用者是否登入等功能。auth user 使用者表 auth user groups 使用者所屬組的表 auth user user permissions 使用者許可...

django中的使用者認證

在開發的時候,一般我都是用的django 的auth方法進行的使用者登陸時候的認證,但是如果是有乙個鏈結,這個時候不能每次都去登陸,那麼認證的資訊存放在 一般是放在session中,但是session中有一些弊端,這個時候就jwt就出來了。引用參考 這個好處多多,以後也算標配了。但是有乙個問題,這個...

Django 使用者認證系統 基本設定

本教程為系列教程,為方便閱讀,每篇教程開頭列出全部教程的目錄索引 提供登入 註冊等使用者認證功能是乙個常見的需求。因此,django 提供了一套功能完整的 靈活的 易於拓展的使用者認證系統 django.contrib.auth。在本教程中,我將向你展示 auth 模組的基本用法,例如如何提供使用者...