这是我的控制器代码
@auth.route('/login/', methods=['GET', 'POST'])
def signin():
form = LoginForm(request.form)
# return form.email.data
if form.validate_on_submit():
return form.email.data
user = User.query.filter_by(email=form.email.data).first()
if user and check_password_hash(user.password, form.password.data):
session['user_id'] = user.id
flash('Welcome %s' % user.name)
return redirect(url_for('auth.home'))
else:
return "invalid username and password"
return "Signin form"
表单代码
class LoginForm(Form):
email = TextField('Email Address', [
Required(message='Forgot your email address?')])
password = PasswordField('Password', [
Required(message='Must provide a password. ;-)')])
我正在检查使用以下卷曲请求
curl -i localhost:9000/auth/login/ --data "email=a@b.com&password=b" -X POST
表单正在获取数据,但在validate_on_submit()处失败。是什么原因呢。另外如果是因为csrf令牌,请告诉我如何禁用它,因为我刚刚开始使用它。
我认为使用
在配置中禁用CSRF非常重要CSRF_ENABLED = False
然后使用加载配置 app.config.from_object('配置&#39)
但它似乎仍然无法正常工作。值得一提的另一件事是,这是一个休息api
答案 0 :(得分:0)
刚刚解决了这个问题。 WTF-Form csrf不会被 Pattern pbold = Pattern.compile(".*\\*[ \n]*(.*?)[ \n]*\\*.*");
Matcher mbold = pbold.matcher(s);
mbold.find();
禁用。要全局禁用它,应将以下内容添加到配置
CSRF_ENABLED