解決token衝突

2021-09-10 20:12:04 字數 1016 閱讀 9856

當在專案中多個模組都生成token時,快取中的token可以保證在同乙個時空內不重複(因為uuid不會重複。token = uuid.uuid4().hex)但是cache中的key是有可能重複的,因為id都是從1開始的。例如:同乙個專案中,有後管理使用者和影院使用者,其user_id都是從1開始的生成,當user_id = cathe.get(token)時,有可能可以用影院使用者的token執行後台管理員使用者的許可權,造成token衝突

解決方法:給token新增字首

建立乙個工具包如utils

例:

import uuid

admin = 'admin'

cinema = 'cinema'

viewer = 'viewer'

def generrate_token(prefix):

token = uuid.uuid4().hex

return prefix + token

def generrate_admin_token():

return generrate_token(admin)

def generrate_cinema_token():

return generrate_token(cinema)

def generrate_viewer_token():

return generrate_token(viewer)

呼叫生成token時:

token = generrate_admin_token()
認證token時:

token = request.query_params.get('token')

if not token .startswith('admin'): # 驗證的是字首是admin=『admin』的token

raise exception('錯誤的操作')

user_id = cache.get(token)

....

解決 SVN解決衝突

intelij idea 使用svn,提交 前先更新 此時如果有衝突,就會提示你解決衝突。產生衝突的情況 a 和 b 兩名程式設計師,分別更新了同一版本 version 1 的 同時修改了乙個檔案。a提交 後,伺服器中的 是 version a 即 a 修改後的 b隨後提交 由於伺服器中的 已經不是...

svn衝突解決

by lone on june 21,2011 1 如何產生衝突 當開發人員a和開發人員b從版本庫同時檢出文件1.txt,而a和b同時修改了1.txt的同一地方,後提交的一方會在拷貝副本中產生衝突。兩個工作拷貝,a拷貝中檔案1.txt內容為 dfqerq 123dfwre b拷貝中檔案1.txt內容...

git衝突解決

2年前 2013 08 09 10564瀏覽 同事在使用git pull 時,經常會碰到有衝突的情況,提示如下資訊 error your local changes to c environ.c would be overwritten by merge.aborting.please,commit...