當在專案中多個模組都生成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...