Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
缺少CSRF令牌-请参阅Python_Python_Python 3.x_Flask_Wtforms - Fatal编程技术网

缺少CSRF令牌-请参阅Python

缺少CSRF令牌-请参阅Python,python,python-3.x,flask,wtforms,Python,Python 3.x,Flask,Wtforms,我正在尝试在Flask中创建一个登录表单。但是,每次我填写信息并单击“登录”时,它都会给我一个错误:'csrf_token':['csrf token丢失]} 当我在浏览器中检查网页代码时,它显示我在表单中确实有一个CSRF令牌 <h1>Log In</h1> <form action="/" method="POST" class="register"> <input id="

我正在尝试在Flask中创建一个登录表单。但是,每次我填写信息并单击“登录”时,它都会给我一个错误:
'csrf_token':['csrf token丢失]}

当我在浏览器中检查网页代码时,它显示我在表单中确实有一个CSRF令牌

<h1>Log In</h1>
<form action="/" method="POST" class="register">
    <input id="csrf_token" name="csrf_token" type="hidden" value="IjAyZjNmOGZmMmRhNGIyOWI1YTBiNmVhMzNiYTU3MGUxY2U2ZTAxZmQi.X5V_4A.5EzKomC48Xa0I3iNinFu1yncRak">
    <input id="csrf_token" name="csrf_token" type="hidden" value="IjAyZjNmOGZmMmRhNGIyOWI1YTBiNmVhMzNiYTU3MGUxY2U2ZTAxZmQi.X5V_4A.5EzKomC48Xa0I3iNinFu1yncRak">

    <div class="username">
        <label for="username">Username</label>
        <input id="username" name="username" placeholder="8 to 20 characters" required type="text" value="">
    </div>
这是路线:

@users.route('/login', methods=['GET', 'POST'])
def login():
    form = LoginForm()
    if form.validate_on_submit():
        from app.users.models import User
        print('validate on submit')

        user = User.query.filter_by(username=form.username.data).first()
        flash(user)
        print(user)

        if user is None:
            flash('Invalid username or password', 'error')
            return redirect(url_for('login'))

        if user is not user.check_password(form.password.data):
            flash('Invalid username or password', 'error')
            return redirect(url_for('login'))
            
        login_user(user, remember=form.remember_me.data)

        next_page = request.args.get('next')
        if not next_page or url_parse(next_page).netloc != '':
            next_page = url_for('home')
        return redirect(next_page)
    print(form.errors)
    
    return render_template('users/login.html', title='Log In', form=form)
我有一个config类,它也创建了一个密钥:

class Config:
    app.config['SECRET_KEY'] = 'era14149dfafjf328491rej1f19914'
该表单还包含一个
隐藏标记
和一个
csrf\u令牌

<h1>Log In</h1>
<form action="/" method="POST" class="register">
    {{ form.hidden_tag() }}
    {{ form.csrf_token }}
登录
{{form.hidden_tag()}}
{{form.csrf_token}

我做错了什么?表单在网页代码中显示CSRF令牌,但由于某些原因,它仍然不起作用…

尝试将html代码更改为以下内容:

<h1>Log In</h1>
<form action="/" method="POST" class="register">
    {{ form.csrf_token }}
登录
{{form.csrf_token}
根据我的经验,您不需要form.hidden_tag()

如果我的回答对你有帮助,请考虑我的职位。我是这个网站的新手,我正努力赢得足够的声誉,以便能够在帖子上发表评论:) 非常感谢。
快乐编码

尝试将html代码更改为以下内容:

<h1>Log In</h1>
<form action="/" method="POST" class="register">
    {{ form.csrf_token }}
登录
{{form.csrf_token}
根据我的经验,您不需要form.hidden_tag()

如果我的回答对你有帮助,请考虑我的职位。我是这个网站的新手,我正努力赢得足够的声誉,以便能够在帖子上发表评论:) 非常感谢。
快乐编码

好吧,在两种情况下,你都没有真正关闭(
)表单tag@roganjosh我正在合上标签。那不是完整的表单代码。这是完整的代码:在这两种情况下,您都没有实际关闭(
)表单tag@roganjosh我正在合上标签。那不是完整的表单代码。这是完整的代码:谢谢你的回答!不过,这似乎没有什么帮助。我仍然会遇到同样的错误(你有没有在这里发现你的代码出了什么问题?谢谢你的回答!不过这似乎没有什么帮助。我仍然会遇到同样的错误。)(你有没有在这里发现你的代码出了什么问题?