自定義token,儲存到客戶端的cookie中,

2022-05-05 00:57:10 字數 1711 閱讀 6194

#原理自定義token,放入cookie中,不用存資料庫

#token定義方式 >>>>> "加密字串"|登陸使用者id|使用者登陸時間

#加密字串由登陸使用者id,登陸時間和鹽通過md5加密完成

import hashlib

def get_token(user_id,current_time):

md5= hashlib.md5()

md5.update("寶塔鎮河妖".encode("utf-8"))

md5.update(str(current_time).encode("utf-8"))

md5.update(str(user_id).encode("utf-8"))

md5.update("egon掏大刀".encode("utf-8"))

token ="|".join([md5.hexdigest(),str(user_id),str(current_time)])

return token

#對應的解密方法

def check_token(token,redis_conn):

try:

res = redis_conn.get(token)

if not res:

return false,"未登陸"

user_info = token.split("|")

user_id = user_info[1]

create_time = user_info[2]

if token != get_token(user_id,create_time):

return false,"非法登陸"

return true,"登陸成功"

except exception as e:

print(e)

return false,"未知錯誤"

pass

#登陸函式

def post(self, request):

uname = request.post.get("uname")

user = user.objects.filter(uname=uname)

if not user:

return response()

pwd = request.post.get("pwd")

hashlib_pwd = hash_pwd(pwd)

db_pwd = user[0].pwd

if hashlib_pwd != db_pwd:

return response()

try:

token = get_token(user[0].pk, time.time())

if user[0].isadmin:

response = render(request, "admin/index.html", )

else:

response = render(request, "user/index.html", )

#將token資訊放入cookie中,客戶端就會將token存入cookie中,下次來的時候request.cookie.get("token")就能拿到

response.set_cookie("token", token)

return response

except exception as e:

return response()

Ribbon 自定義客戶端

ribbon的載入策略是懶載入,即第一次請求的時候才載入對應上下文,正是這個原因,很多時候第一次呼叫顯得很慢,甚至會超時,所以,可以通過指定ribbon具體服務名稱來開啟餓載入,即在工程啟動的時候,載入所有的配置上下文。如下 ribbon eager load enabled true client...

zabbix客戶端win linux,自定義監控項

linux下的zabbix agent原始碼包安裝 step1 安裝依賴包 gcc pcre devel configure prefix usr local zabbix enable agent make make install step3 建立zabbix使用者 useradd s sbin...

FastDFS客戶端與自定義檔案儲存系統

1 安裝 2 使用 使用fastdfs客戶端,需要有配置檔案。我們在meiduo mall utils目錄下新建fastdfs目錄,將提供給大家的client.conf配置檔案放到這個目錄中。需要修改一下client.conf配置檔案 base path fastdfs客戶端存放日誌檔案的目錄 tr...