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参数?
这并不是说你必须验证next用next_is_valid,只有
您必须验证下一个参数的值.
next_is_valid 只是一个示例功能.
您必须next根据自己的标准确定是否有效.next是成功登录时重定向到的URL.如果您有权对您的网站进行申请或限制,那么您可以确保这些权限得到执行.
例如,用户可以尝试使用请求URL登录http://example.com/login?next=admin/delete/all/users.如果登录尝试成功并且您的登录功能或端点本身未检查管理员权限,那么可能会发生不好的事情.这完全取决于您如何构建应用程序并控制对各个端点的访问.