如何在python中生成唯一的身份验证 token ? - python

我试图在烧瓶中为我的Android应用程序编写基于令牌的身份验证。为此,我需要一个唯一的令牌,通过它可以验证用户。

它的危险库提供了JSONWebSignatureSerializer函数,可以使用它创建JWT令牌。所以我的第一个问题是,将JWT用于基于移动的身份验证是否安全?

其次,我对django rest框架如何生成其令牌进行了一些研究。

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

这个令牌是唯一的还是随机的?我应该使用哪一种进行基于移动的身份验证?

在python中为移动应用程序生成唯一令牌的基本方法是什么?

参考方案

您可以像提到的那样使用内置的uuid模块。 3.6中发布的新的secrets模块还能够创建唯一的令牌。

from uuid import uuid4

rand_token = uuid4()

每次调用时,下面的函数都会创建一个唯一的令牌。 os.urandom方法返回20个随机字节作为字符串,而binascii.hexlify方法将这20个字节中的每一个转换为该字节的2位十六进制表示形式。这就是为什么返回值是两倍长的原因。

如果要使用此方法,并且需要令牌具有特定的长度,请使用所需长度的一半作为os.urandom方法的参数。

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

45码

在Django中聚合save()? - python

我正在使用带有sqlite后端的Django,并且写入性能是一个问题。在某个阶段,我可能会毕业于“适当的”数据库,但是目前我仍然坚持使用sqlite。我认为我的写入性能问题可能与以下事实有关:我创建了大量行,并且大概每次save()一个行时,它都会锁定,解锁和同步磁盘上的数据库。如何将大量save()调用聚合到一个数据库操作中? 参考方案 编辑:不建议使用c…

如何在Linux上安装2个Anacondas(Python 2.7和3.5)? - python

我想使用Python 2和3版本。我已经读过有关conda环境的用法,但是不断向终端source (de)activate py27写入内容似乎不方便。如picture所示,如何使用命令选择内核版本? 参考方案 您在该图像中寻找的是Jupyter Notebook。您需要使用Jupyter和所需的python版本创建环境:conda create -n py…

为什么在for循环中将单词从复数形式转换为单数形式会花费这么长时间(Python 3)? - python

这是我的代码,用于从CSV文件读取文本并将一列中的所有单词从复数形式转换为单数形式:import pandas as pd from textblob import TextBlob as tb data = pd.read_csv(r'path\to\data.csv') for i in range(len(data)): blob …

为什么主要的可运行Python脚本未编译为pyc文件(如模块)? - python

我了解,当您导入模块时,该文件会被编译成.pyc文件以使其更快?为什么主文件也未编译为.pyc?这会减慢速度吗?那么将主文件保持得尽可能小会更好,还是没关系? 参考方案 加载模块时,会将py文件“字节编译”为pyc文件。时间戳记录在pyc文件中。 这样做不是为了使其运行更快,而是使其加载更快。 因此,在加载模块时使用“字节编译”模块是有意义的。 http:/…

如何在“后台”中运行脚本的一部分(单个函数)? - python

我在具有以下基本结构(伪代码)的服务器上运行python脚本:for data_item in data_items: processed_result=process_data(data_item); #this takes time T0 upload_result_to_site(processed_result) #this takes time T…