Django結合JWT生成金鑰和解密

2021-10-21 02:42:38 字數 4607 閱讀 3137

首先,前端使用者輸入使用者名稱和密碼登入,後端接收到前端的值,先從資料庫判斷使用者是否存在,如果存在就會利用jwt生產金鑰,並把金鑰傳給前端,前端接收到後端傳過來的金鑰,在以後的介面請求中在頭部都帶著金鑰,後端會判斷金鑰,如果過期和錯誤,都會重新定向登入頁面。

前端使用layui框架,使用者登入請求後,會從後端返回資料,如果登入成功,就儲存token到localstorage。**如下:
layui.

use(

['form'

,'layer'],

function()

else}}

)return

false;}

);})

;

後端先獲取使用者資料,判斷使用者是否在資料庫。在生成金鑰,返回到前端。**如下:
//使用者登入介面

def login

(request)

:if request.method==

'get'

:return

render

(request,

'login.html'

)else

: uname = request.

post

.get

('username'

,none)

pwd = request.

post

.get

('password'

,none)

data=json.

dumps()

# 引入hashlib加鹽

m = hashlib.

md5(

) m.

update

(pwd.

encode

("utf8"))

result = user.objects.

filter

(username=uname)

# 返回格式,加入jwt生成的金鑰

# result[

'code']=

0 # result[

'token']=

'' results=

if result.

exists()

:if result[0]

.password == m.

hexdigest()

: #新增jwt獲取token

(results,safe=false)

//生成金鑰介面

jwt_salt

='123456'

def create_token

(user_name, timeout=10)

:"""

:param payload: 例如:使用者資訊

:param timeout: token的過期時間,預設20分鐘

對token進行和發行校驗並獲取payload

:param token:

:return

:"""

result =

try:

verified_payload = jwt.

decode

(token, key =

jwt_salt

, verify=false,algorithms=

['hs256'])

print

(verified_payload)

result[

'status'

]= true

result[

'data'

]= verified_payload

result[

'error']=

'123'

except exceptions.expiredsignatureerror:

result[

'error']=

'token已失效'

except jwt.decodeerror:

result[

'error']=

'token認證失敗'

except jwt.invalidtokenerror:

result[

'error']=

'非法的token'

return result

jwt 生成token方法

author marte date 2019 04 23 10 37 03 last modified by marte last modified time 2019 04 23 10 58 23 單例 一次請求中所有出現使用jwt的地方都是乙個使用者 class jwtelse 驗證token是...

JWT 生成及驗證

1 composer安裝 composer require lcobucci jwt 3.3 2 例項化類 namespace tools jwt use 到你自己安裝的目錄,每個人的可能不同 use lcobucci jwt builder use lcobucci jwt parser use ...

Linux生成金鑰

大家可以配置成密論認證的方式 首先生成金鑰,用命令ssh keygen t rsa 執行後可以一直空格,生成金鑰,id rsa和id rsa.pub檔案 預設放在 root ssh 下,ssh檔案是隱藏的,要顯示隱藏檔案才看得到 在 home admin下建立.ssh活頁夾,把id rsa.pub檔...