简体   繁体   English

Flask-Bcrypt运行时错误

[英]Flask-Bcrypt Run time error

I was finishing up a simple little user login with Flask and Bcrypt . 我正在用FlaskBcrypt完成一个简单的小用户登录。 However, when trying to login with a user that is stored in my database, I keep encountering a runtime error . 但是,当尝试使用存储在数据库中的用户登录时,我总是遇到运行时错误 It looks like some sort of loop that's breaking. 看起来好像某种loop正在中断。 Being that I'm pretty new to programming, this has been incredibly challenging to figure out what I'm doing wrong. 由于我对编程还很陌生,因此弄清楚我在做什么错是非常困难的。 Hopefully someone here can help out! 希望这里有人可以帮忙! I'll past the relevant code below: 我将通过下面的相关代码:

Here's the issue I'm getting. 这是我遇到的问题。 It just keeps looping this until it exceeds the maximum: 它只是不断循环直到超过最大值:

  File "C:\\Users\\desktop\\test\\app\\models.py", line 37, in password return self.password File "C:\\Users\\.virtualenvs\\flask\\lib\\site-packages\\sqlalchemy\\ext\\hybrid.py", 

line 742, in get return self.fget(instance) File "C:\\Users\\desktop\\test\\app\\models.py", line 37, in password 第742行,在get返回self.fget(instance)文件“ C:\\ Users \\ desktop \\ test \\ app \\ models.py”,第37行,密码

Models.py Models.py

class User(db.Model):
    __tablename__ = "users"
    id = db.Column(db.Integer, primary_key=True)
    nickname = db.Column(db.String(64), index=True, unique=True)
    email = db.Column(db.String(120), index=True, unique=True)
    password = db.Column(db.String(100))
    posts = db.relationship('Post', backref='author', lazy='dynamic',
                            primaryjoin="User.id==Post.user_id")
    about_me = db.Column(db.String(140))
    last_seen = db.Column(db.DateTime)
    followed = db.relationship('User',
                                secondary=followers,
                                primaryjoin=(followers.c.follower_id == id),
                                secondaryjoin=(followers.c.followed_id == id),
                                backref=db.backref('followers', lazy='dynamic'),
                                lazy='dynamic')


    @hybrid_property
    def password(self):
        return self.password



    @password.setter
    def set_password(self, plaintext):
        self.password = bcrypt.generate_password_hash(plaintext)

    def is_correct_password(self, plaintext):
        return bcrypt.check_password_hash(self.password, plaintext)

Forms.py Forms.py

class LoginForm(Form):
    nickname = TextField('Nickname', validators=[DataRequired()])
    password = PasswordField('Password', validators=[DataRequired()])

Views.py Login Views.py登录

@app.route('/login', methods=['GET', 'POST'])
def login():
    form = LoginForm()
    if form.validate_on_submit():
        user = User.query.filter_by(nickname=form.nickname.data).first_or_404()
        if user.is_correct_password(form.password.data):
            login_user(user)
            flash("you've been logged in!, 'success'")
            return redirect(url_for('index'))
        else:
            flash('your email or password doesnt match!', 'error')
            return redirect(url_for('login'))
    return render_template('login.html',
                            title='Sign In',
                            form=form)

Views.py Registration Views.py注册

@app.route('/register', methods=('GET', 'POST'))
def register():
    form = forms.RegisterForm()
    if form.validate_on_submit():
        user = User(nickname=form.nickname.data, emai=form.email.data, password=form.password.data)
        db.session.add(user)
        db.session.commit()
        flash('User successfully registered')
        return redirect(url_for('login'))
    return render_template('register.html', form=form)

You should use different names for column and property 您应该对列和属性使用不同的名称

class User(db.Model):
    __tablename__ = "users"
    id = db.Column(db.Integer, primary_key=True)
    password_hash = db.Column(db.String(100))

    @hybrid_property
    def password(self):
        return self.password_hash

    @password.setter
    def set_password(self, plaintext):
        self.password_hash = bcrypt.generate_password_hash(plaintext)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 安装flask-bcrypt - Installing flask-bcrypt Flask-bcrypt 哈希结果不符合预期 - Flask-bcrypt hash result is not as expected flask-bcrypt - ValueError:无效的盐 - flask-bcrypt - ValueError: Invalid salt 当我运行我的 flask 应用程序时收到此错误,我什至安装了轮子然后烧瓶 bcrypt。 如何解决以下 ModuleNotFoundError? - I am receiving this error when I run my flask app, I have even installed wheel then flask-bcrypt . How do I resolve the following ModuleNotFoundError? 使用flask-bcrypt生成和验证密码哈希值 - Generating and verifying password hashes with flask-bcrypt py-bcrypt提供了与flask-bcrypt不同的哈希结果-可能吗? - py-bcrypt giving different hash results than flask-bcrypt - possible? 使用pip安装flask-bcrypt时,一个错误是:UnicodeDecodeError:'ascii'编解码器无法解码位置49的字节0xe6:序数不在范围内(128) - When use pip to install flask-bcrypt, one error is :UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 49: ordinal not in range(128) 当我尝试安装Flask-bcrypt时,抛出错误:命令'x86_64-linux-gnu-gcc'失败,退出状态为1 - when I try to install Flask-bcrypt it throws me error: command 'x86_64-linux-gnu-gcc' failed with exit status 1 Flask-Bcrypt-AttributeError:“模块”对象没有属性“ ffi”-部署到AWS Beanstalk - Flask-Bcrypt - AttributeError: 'module' object has no attribute 'ffi' - deployed to AWS Beanstalk Docker 无法使用 python:3.11-rc-alpine3.14 安装 Flask-Bcrypt - Docker fails to install Flask-Bcrypt with python:3.11-rc-alpine3.14
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM