python - Flask 应用程序的简单例份验证方法?

标签 python flask

我正在开发用 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/

相关文章:

Flask-Assets 根本不工作... = 精神错乱

python - 如何提取 XML 特定值字段并列出它们?

python - any()的返回值

python - 将 "primary toolbar"样式类添加到 gtk.Builder 对象后,工具栏中的 gtk.ToolButtons 不是主主题

python - 如何在 Flask 网络应用程序中使用现有的 PostGIS 数据库

python - Flask self.errors.append() - AttributeError : 'tuple' object has no attribute 'append'

python - 如何在 Jinja 模板中导入和调用 Python 函数?

Python nosetests : how to access cmd line options? 即 `--failed`

python - 带元组键的字典 : All tuples with the same first element

python - Flask函数中获取JSON数据