2015-10-20 99 views
0

我試圖跟蹤Django rest框架中的代碼。令牌是否可以在django rest框架中進行復制?

我正在研究令牌如何由DRF生成。

這是DRF repository從GitHub有關生成密鑰:

def generate_key(self): 
    return binascii.hexlify(os.urandom(20)).decode() 

我有一個疑問。是否有可能重複?

其實我不知道它爲什麼用os.urandombinascii.hexlify可以生成唯一的密鑰。任何人都可以解釋它?

回答

2

該代碼不會生成唯一的密鑰,它會生成足夠大的隨機(或僞隨機)密鑰,使其重複的概率非常低。

但是,該值用作模型的主鍵。在大多數(如果不是全部的話)數據庫中,主鍵是唯一的。所以如果它確實碰巧產生了重複,它會在嘗試提交時失敗。雖然在Django的情況下,它可能只是assume you were updating the existing record並更改令牌分配給的用戶。這不是合理的擔心,可能性太低。

+0

我同意。解決這個問題是個好主意。 –

相關問題