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 =
進行資料庫遷移
應用下的urls.pypython manage.py makemigrations
python manage.py migrate
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'
(username, password)
# 驗證登入,判斷資料庫中是否存在使用者輸入的賬號和密碼,返回乙個user物件
user = authenticate(request, username=username, password=password)
(user,
type
(user)
)if user:
# 記住使用者的登入狀態,給已認證的使用者附加sessionid等資訊
login(request, user)
return redirect(reverse())
else
:return redirect(reverse())
return render(request,
)
前端通過isauthenticated資訊判斷是否登入,true表示已登入,false表示未登入。
index.htmldef
index
(request)
:return render(request,
)
退出登入
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 模組的基本用法,例如如何提供使用者...