日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Flask项目2】生成token和验证token(11)

發(fā)布時間:2025/3/21 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Flask项目2】生成token和验证token(11) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

用戶登錄

用戶登錄的功能我們使用 Json Web Token(JWT) 來為登錄用戶生成token令牌,并返回給客戶端,客戶端有了令牌之后,每次訪問服務(wù)器,都攜帶Token,后臺經(jīng)過驗(yàn)證就能知道當(dāng)前登錄的用戶是誰,以實(shí)現(xiàn)鑒權(quán),權(quán)限控制。

comment——utils——token_pyjwt.py
生成token和驗(yàn)證token

import jwt from comment.utils import const from datetime import datetime,timedelta from jwt import PyJWTError from flask import current_app from comment.models.user import Userdef generate_tokens(uid):'''一個用戶在一次會話生成一個token:param uid: 用戶id:return:'''#params:是生成token的參數(shù)params={'id':uid,#exp:代表token的有效時間,datetime.utcnow():代表當(dāng)前時間#timedelta:表示轉(zhuǎn)化為毫秒'exp':datetime.utcnow()+timedelta(seconds=const.JWT_EXPIRY_SECOND)}#key:密鑰,#algorithm:算法,算法是SHA-256#SHA-256:密碼散列函數(shù)算法.256字節(jié)長的哈希值(32個長度的數(shù)組)---》16進(jìn)制字符串表示,長度為64。信息摘要,不可以逆return jwt.encode(payload=params,key=const.SECRET_KEY,algorithm='HS256')def verify_tokens(token_str):'''驗(yàn)證token:param token_str:如果驗(yàn)證成功返回用戶id:return:'''try:#返回之前生成token的時候的字典,字典種包含id和expdata=jwt.decode(token_str,key=const.SECRET_KEY,algorithms='HS256')current_app.logger.info(data)user=User.query.filter(User.id==data['id']).first()if user and user.onlock==0: #如果用戶存在,并且沒有鎖定return {'id':user.id}else:return {"message":"數(shù)據(jù)庫中不存在當(dāng)前用戶,或者用戶已經(jīng)過期"}except PyJWTError as e:current_app.logger.error(e)return {"message":"token驗(yàn)證失敗"}

comment——utils——const.py
定義常量

SECRET_KEY=os.urandom(16) #生成一個隨機(jī)數(shù)作為密鑰 JWT_EXPIRY_SECOND=60*60 #TOKENDE 有效時間,一個小時

總結(jié)

以上是生活随笔為你收集整理的【Flask项目2】生成token和验证token(11)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。