Я пытаюсь создать учетную запись, которая проверяет роли пользователей и перенаправляет их на другую страницу после проверки подлинности на основе их ролей.Я проверил везде и сделал именно то, что они заявили, но каждый раз, когда я пытаюсь войти в систему пользователя, я просто перенаправляется обратно на страницу входа в систему, и я понятия не имею, что я делаю неправильно.
менеджер входа в систему
@login_manager.user_loader
def load_user(user_id):
return User.query.get(int(user_id))
моя пользовательская модель
class User(db.Model, UserMixin):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
first_name=db.Column(db.String(80), unique=True, nullable=False)
last_name=db.Column(db.String(80), unique=True, nullable=False)
username = db.Column(db.String(80), unique=True, nullable=False)
email=db.Column(db.String(80), unique=True, nullable=False)
password= db.Column(db.String(80),nullable=False)
score=db.Column(db.Integer(), nullable=False)
roles=db.Column(db.String(20),nullable=False)
posts= db.relationship('Post', backref='posts', lazy=True)
def is_authenticated(self):
return True
def is_active(self):
return self.is_active
def activate_user(self):
self.is_active = True
def is_anonymous(self):
return False
def get_id(self):
return unicode(self.id)
def get_roles(self):
return self.roles
def __repr__(self):
return f"User('{self.username}', '{self.email}')"
маршрут входа в систему
@app.route("/teacher/login", methods=['GET','POST'])
def t_login():
form=LoginForm()
if request.method == 'POST' and form.validate_on_submit():
user=User.query.filter_by(username=form.username.data).first()
if user and bcrypt.check_password_hash(user.password, form.password.data):
login_user(user)
if 'Teacher' in current_user.roles:
return redirect(url_for('classes'))
else:
return redirect(url_for('scoreboard'))
else:
flash(f'Login Unsuccessful. Please check your username and password', 'danger')
return render_template('teacher_login_form.html',title='teacher login',form=form)
Я хотел бы быть перенаправлен на маршрут классов, если учитель в current_user.roles и«табло», если нет