我正在开发用 Python、Flask 和 SQLite 编写的简单博客系统, 我为它创建了一个简单的授权系统。不需要任何花哨的东西,所以只需通过表单发送登录名和密码并在 Flask session 中设置一个标志即可。我想知道这样的事情是如何完成的,所以我没有使用任何模块。
我想知道这个方法是否正确且足够安全。
# from auth module
@auth.route('/login', methods=['POST'])
def login():
"""Login as blog admin."""
# Successeful login conditions
user_is_valid = request.form['user'] == current_app.config['USER']
password_is_valid = request.form['password'] == current_app.config['PASSWORD']
trap_is_empty = not request.form['trap']
# Login user if credentials are correct
if user_is_valid and password_is_valid and trap_is_empty:
session['is_admin'] = True
return redirect(url_for('admin.posts_page'))
else:
return render_template('auth.html')
# from admin module
@admin.before_request
def before_request():
""" Before any request check admin flag, redirect to the main page if there is none. """
if not session.get('is_admin'):
return redirect(url_for('blog.index_page'))
proj.db.connect()
最佳答案
老实说,对于一个基本的身份验证系统来说,它看起来不错。不好的部分是将凭据存储在配置中。
如果您想要变得更酷、更奇特,您可以使用 itsdangerous
生成密码的哈希值和盐并将它们存储在您的 sqlite 数据库中。
通常,您会有一个表,其中包含 ID、用户名、密码和 bool 标志(例如“is_admin”)或您在身份验证时可以检查的内容。
所以,这对于一些人来说是没问题的,但我不会推荐在生产中使用这样的东西。
关于python - Flask 应用程序的简单例份验证方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32434192/