类型错误: +: 'int' 和 'bytes' 的操作数类型不受支持。



我在sqlite中有一个名为User的表,我想检查令牌,以便重置密码。我在标题中发现了错误。这是代码:

from datetime import datetime
from itsdangerous import Serializer as Serializer
from flaskblog import db, login_manager, app
from flask_login import UserMixin

class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(20), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
image_file = db.Column(db.String(20), nullable=False, default='default.jpg')
password = db.Column(db.String(60), nullable=False)
posts = db.relationship('Post', backref='author', lazy=True)
def get_reset_token(self, expires_sec=1800):
s = Serializer(app.config['SECRET_KEY'], expires_sec)
return s.dumps({'user_id': self.id}).decode('utf-8')
@staticmethod
def verify_reset_token(token):
s = Serializer(app.config['SECRET_KEY'])
try:
user_id = s.loads(token)['user_id']
except:
return None
return User.query.get(user_id)
def __repr__(self):
return f"User('{self.username}', '{self.email}', '{self.image_file}')"

错误可能在这一行,但我读了一些文件,没有找到方法,请帮忙。

return s.dumps({'user_id': self.id}).decode('utf-8')

我发现错误的原因是新版本的"它很危险;没有";TimedJSONWebSignatureSerializer";我本来应该用它来代替";串行器",所以我用安装了它的早期版本

pip install itsdangerous==2.1.0

它工作

我遇到了这个问题,我通过以下步骤解决了它:

  1. 首先,我使用以下命令强制将"itsdangerous"库重新安装到2.0.1版本:

pip-install--强制重新安装其危险的==2.0.1

  1. 重新安装后,我从"itsdangerous"导入了"TimedJSONWebSignatureSerializer"类:

从其危险的导入TimedJSONWebSignatureSerializer作为Serializer

  1. 现在,我的代码工作得很好,并且我能够在没有任何问题的情况下生成和验证令牌

最新更新