python - 在文本或 json 文件中创建用户并将其用于登录 python 网络
问题描述
我做了简单的网络。这是我用来基本登录网络的方法:
@app.route('/signin/', methods=['GET', 'POST'])
def signin_page():
error = None
try:
if request.method == "POST":
attempted_email= request.form['email']
attempted_password = request.form['password']
flash(attempted_email)
flash(attempted_password)
if attempted_email == "admin@gmail.com" and attempted_password == "admin":
return redirect(url_for('homepage'))
else:
error = "Invalid credentials. Try again."
except Exception as e:
flash(e)
return render_template("signin.html", error = error)
如果我想从包含用户信息(电子邮件、密码等)的 txt 或 json 文件(我想使用基本编辑器 txt 制作)中获取用户数据,我该如何修改该代码?如何将登录表单中键入的字符串与文件内容进行比较?
解决方案
我假设您有一个包含内容的文本文件username:password
。您现在可以执行以下操作:
PW_FILE = 'path/to/file/'
def check_credentials(username: str, password: str) -> bool:
# load content of file
with open(PW_FILE) as fh:
content = fh.read().strip('\n') # and remove newlines
credentials = content.split(':', 1) # get credentials as list `[username, password]`
return credentials == [username, password]
@app.route('/signin/', methods=['GET', 'POST'])
def signin_page():
...
if check_credentials(attempted_email, attempted_password):
return redirect(url_for('homepage'))
else:
error = "Invalid credentials. Try again."
...
通常,您不应该捕获非特定异常,因为您可能会吞下一些意外行为。我不熟悉您使用的框架,但我建议您将错误处理更改为更具体,例如
@app.route('/signin/', methods=['GET', 'POST'])
def signin_page():
error = None
if request.method == "POST":
try:
attempted_email= request.form['email']
attempted_password = request.form['password']
except KeyError:
error = "Missing form data"
else:
if check_credentials(attempted_email, attempted_password):
return redirect(url_for('homepage'))
else:
error = "Invalid credentials. Try again."
return render_template("signin.html", error = error)
推荐阅读
- python - 通过在 Python 中输入以前的日期来填充缺失的日期
- dotnetnuke - 请求服务“AddModule”时发生错误
- python - 从字符串中获取最大数量
- angular - NativeScript + Angular: Code Sharing Project
- git - git - 如何恢复 git fetch / git merge
- r - 为什么我用 ggplot 得到空图?
- json - Django 序列化 JSONB 中的所有对象
- c++ - 内联变量被多次初始化
- mongodb - Mongo $set 在更新时删除对象中的其他字段
- bash - Correct way to use Linux commands in bash script