缺少CSRF令牌-请参阅Python
我正在尝试在Flask中创建一个登录表单。但是,每次我填写信息并单击“登录”时,它都会给我一个错误:缺少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="
'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我正在合上标签。那不是完整的表单代码。这是完整的代码:谢谢你的回答!不过,这似乎没有什么帮助。我仍然会遇到同样的错误(你有没有在这里发现你的代码出了什么问题?谢谢你的回答!不过这似乎没有什么帮助。我仍然会遇到同样的错误。)(你有没有在这里发现你的代码出了什么问题?