ImportError:无法导入TimedJSONWebSignatureSerializer,求安全时效令牌生成方案
解决itsdangerous导入TimedJSONWebSignatureSerializer的错误
我跟着Corey Schafer的视频学习生成带时效的安全令牌,用于限制只有能访问用户邮箱的人才能通过PowerShell终端重置密码。但执行以下代码时:
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
出现了如下导入错误:
Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: cannot import name 'TimedJSONWebSignatureSerializer' from 'itsdangerous' (C:\Users\User\Flask\flask\lib\site-packages\itsdangerous\__init__.py)
问题原因
itsdangerous 2.0及以上版本移除了TimedJSONWebSignatureSerializer类,改用更简洁的TimedSerializer或URL安全的URLSafeTimedSerializer替代。
解决方法
方法1:使用TimedSerializer替换
直接替换导入语句,初始化方式和原代码一致:
from itsdangerous import TimedSerializer as Serializer # 初始化示例(和原代码用法相同) serializer = Serializer(secret_key="your-secret-key", expires_in=3600)
方法2:使用URLSafeTimedSerializer(推荐)
如果生成的令牌需要在URL中传输,推荐使用URL安全的版本,功能和旧的TimedJSONWebSignatureSerializer完全一致:
from itsdangerous import URLSafeTimedSerializer serializer = URLSafeTimedSerializer( secret_key="your-secret-key", salt="password-reset", # 可选,用于区分不同场景的令牌 expires_in=3600 )
补充说明
如果需要兼容旧版本的itsdangerous,可以指定安装2.0以下的版本:
pip install itsdangerous==1.1.0
但更建议使用新版本的API,避免依赖过时的包。
内容的提问来源于stack exchange,提问作者Ajayi Oluwaseyi
相关产品推荐
相关产品推荐

