實現:使用者登入成功後,對應的 token 表建立一條對應登入使用者的 token 資料
models.py:
from django.db import models在 userinfo 表中新增三條資料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)
# 給 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...