I'm trying to implement authorization in my flask admin project. And I have strange error as in header that I can not fix.
forms:
class LoginForm(FlaskForm):
password = PasswordField('Password', validators=[DataRequired()])
email = EmailField('E-mail', validators=[DataRequired()])
remember = BooleanField('Remember Me')
next = TextAreaField('next')
submit = SubmitField('Sign In')
AdminIndexView:
class MyAdminIndexView(AdminIndexView):
@expose('/')
def index(self):
if not current_user.is_authenticated:
return redirect(url_for('.login_page'))
return super(MyAdminIndexView, self).index()
@expose('/login', methods=('GET', 'POST'))
def login_page(self):
if current_user.is_authenticated:
return redirect(url_for('.index'))
form = LoginForm()
if form.validate_on_submit(form):
user = User.query.filter_by(username=form.username.data).first()
app.logger.info('user = ', user)
if user is None or not verify_hash(form.password.data, user.password):
flash('Invalid username or password')
user = User.query.filter_by(username=form.email.data).first()
login_user(user, remember=form.remember.data)
next_page = request.args.get('next')
if not next_page or url_parse(next_page).netloc != '':
next_page = url_for('admin.index_view')
return redirect(next_page)
return render_template(
'security/login_user.html',
title='Sign In',
login_user_form=form
)
I go to index page, flask redirects me on login page. Login page's method call validate_on_submit and it results with this error. I tried to add extra_validators to parameters of validate_on_submit but whatever I wrote the error was the same
A recent change to Flask-WTForms added this - later versions of Flask-Security-Too support this. If you are using Flask-Security I don't think it will work unless you downgrade Flask-WTFOrms.