Hej, mam pytanko. Oto kawałek kodu który obsługuje logowanie w mojej aplikacji:
@app.route('/login', methods=['GET', 'POST'])
def login():
form = LoginForm()
# redirect when logged
if 'logged' in session:
if 'admin' in session:
return redirect('/admin')
elif 'user' in session:
return redirect(url_for('dashboard'))
if form.validate_on_submit():
admin = Administrator.query.filter_by(login=form.username.data).first()
user = FuneralHome.query.filter_by(login=form.username.data).first()
if admin:
if check_password_hash(admin.password, form.password.data):
session['logged'] = True
session['admin'] = True
return redirect('/admin')
elif user:
if check_password_hash(user.password, form.password.data):
session['logged'] = True
session['user'] = True
session['username'] = user.name
return redirect(url_for('dashboard'))
else:
return 'Invalid username or password'
return render_template('login.html', form=form)
Potem, bazując na tym co się znajduje w sesji przydzielam użytkownikowi i adminowi dostęp do dedykowanych im widoków. Czy jest to bezpieczne? Jak nie, to jak to zabezpieczyć?