python - 无法使用烧瓶 flask_login 登录
问题描述
我创建了注册协议并且它有效但是在登录时,它总是检查登录是否正确。我使用 sqlite3,没有太多额外的代码,我把它们都放在 main.py 代码中 这是我的 main.py 代码
db = SQLAlchemy(main)
db.init_app(main)
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(100), nullable=False, unique=True)
password = db.Column(db.String(100), nullable=False)
login_manager = LoginManager()
login_manager.login_view = 'login'
login_manager.init_app(main)
@main.route('/login')
def login():
return render_template('login.html')
@main.route('/login', methods=['POST'])
def login_post():
email = request.form.get('email')
password = request.form.get('password')
user = User.query.filter_by(email=email).first()
if not user and password != user.password:
flash('Please check your login details and try again.')
return redirect(url_for('login'))
login_user(user)
return redirect(url_for('profile'))
这是HTML
<form method="POST" action="/login">
<div class="field">
<div class="control">
<input class="input is-large" type="email" name="email" placeholder="Your Email" autofocus="">
</div>
</div>
<div class="field">
<div class="control">
<input class="input is-large" type="password" name="password" placeholder="Your password">
</div>
</div>
<button class="button is-block is-info is-large is-fullwidth">Login</button>
</form>
解决方案
逻辑错误。
- if not user and password != user.password:
+ if not user or password != user.password:
flash('Please check your login details and try again.')
return redirect(url_for('login'))
抱歉,stackoverflow 编辑器不支持差异语法。-
表示应该删除+
该行,表示应该添加该行。
推荐阅读
- php - Symfony - 通过调用方法更改实体字段
- vb.net - 如何修复“vbc.exe 以代码 -2146232797 退出”Visual Studio?
- python - 在 Django 视图中为不同事件加载多个评论
- mysql - 如何查询列值聚合与某个日期范围内的条件匹配的用户列表?
- python - SyntaxError : 无效的语法绝地
- python - 使用 selenium 甚至无法抓取基本信息
- javascript - 如何使用 sequelize ORM 在 SQLite 中设置线程模式?
- go - 使用 Go 从 Api 获取相反的数据
- sql - oracle sql中的JSON_TABLE未捕获嵌套的json数据
- firebase - 从 Firestore 下载 8GB 数据