DRF 使用者登入加 token

2022-07-07 17:06:12 字數 2255 閱讀 1348

實現:使用者登入成功後,對應的 token 表建立一條對應登入使用者的 token 資料

models.py:

from django.db import models

class userinfo(models.model):

user_type_choices = (

(1, "普通使用者"),

(2, "管理員"),

(3, "超級使用者"),

)user_type = models.integerfield(choices=user_type_choices)

username = models.charfield(max_length=32, unique=true)

password = models.charfield(max_length=64)

class usertoken(models.model):

user = models.onetoonefield(to="userinfo", on_delete=models.do_nothing)

token = models.charfield(max_length=64)

在 userinfo 表中新增三條資料

# 給 token 進行加密處理

def token_md5(user):

ctime = str(time.time()) # 當前時間

m = hashlib.md5(bytes(user, encoding="utf-8"))

m.update(bytes(ctime, encoding="utf-8")) # 加上時間戳

return m.hexdigest()

class authview(apiview):

def post(self, request, *args, **kwargs):

response =

try:

username = request._request.post.get("username")

password = request._request.post.get("password")

user_obj = models.userinfo.objects.filter(username=username, password=password).first()

if not user_obj:

response["code"] = 10001

response["msg"] = "使用者名稱或密碼錯誤"

token = token_md5(username) # 給登入使用者建立 token

# 不存在就建立,存在就更新

models.usertoken.objects.update_or_create(user=user_obj, defaults=)

response["token"] = token

except exception as e:

response["code"] = 1002

response["msg"] = "出現未知錯誤"

return jsonresponse(response)

urls.py:

from django.urls import path

from drf import views

urlpatterns = [

path('api/auth/', views.authview.as_view()),

]

訪問 :

傳送 post 請求:

token 表生成了一條資料:

drf 自帶token學習記錄

rest framework.authtoken 核心 獲取token介面,傳遞使用者密碼 url r api token auth obtain auth token class obtainauthtoken apiview serializer class authtokenserialize...

如何使用token儲存使用者登入資訊

登入成功之後,後台生成乙個token,將token儲存在redis中,key是token,value是使用者id,並且把token響應給前端,前端每次請求時都把token傳給後台進行鑑權。生成token 如下 校驗裝置資訊 param userid 使用者id param deviceid 裝置id...

登入token處理

基本流程 登入後儲存token 是否有token 有token 判斷跳轉頁是否是登入頁面 是 直接跳轉到主頁 否 放過通行 沒有token 判斷跳轉的頁面是否需要token,即跳轉頁是否在白名單 是 翻過通行 否 跳轉到登入頁 一般在專案根目錄中新增permission.js檔案,用於進行判斷tok...