flask-login中不存在next_is_valid()?

rub*_*lex 11 python flask flask-login

Flask-login doc说我们应该在下次使用时验证next_is_valid(),但我找不到任何这样的方法:

警告:您必须验证下一个参数的值.如果不这样做,您的应用程序将容易受到开放重定向的影响.

@app.route('/login', methods=['GET', 'POST'])
def login():
    # Here we use a class of some kind to represent and validate our
    # client-side form data. For example, WTForms is a library that will
    # handle this for us.
    form = LoginForm()
    if form.validate_on_submit():
        # Login and validate the user.
        login_user(user)

        flask.flash('Logged in successfully.')

        next = flask.request.args.get('next')
        if not next_is_valid(next):
            return flask.abort(400)

        return flask.redirect(next or flask.url_for('index'))
    return flask.render_template('login.html', form=form)
Run Code Online (Sandbox Code Playgroud)

运行这个我得到错误:

NameError: global name 'next_is_valid' is not defined
Run Code Online (Sandbox Code Playgroud)

如果我这样做:

from flask.ext.login import next_is_valid
>> ImportError: cannot import name next_is_valid
Run Code Online (Sandbox Code Playgroud)

next_is_valid()函数在哪里,如果不存在,我该如何验证next参数?

bnj*_*jmn 9

这并不是说你必须验证nextnext_is_valid,只有

您必须验证下一个参数的值.

next_is_valid 只是一个示例功能.

您必须next根据自己的标准确定是否有效.next是成功登录时重定向到的URL.如果您有权对您的网站进行申请或限制,那么您可以确保这些权限得到执行.

例如,用户可以尝试使用请求URL登录http://example.com/login?next=admin/delete/all/users.如果登录尝试成功并且您的登录功能或端点本身未检查管理员权限,那么可能会发生不好的事情.这完全取决于您如何构建应用程序并控制对各个端点的访问.