Запомнить пользователя зарегистрироваться - PullRequest
0 голосов
/ 06 июля 2018

У меня проблемы с процессом регистрации / входа. Я использую Flask в качестве Backend

Вот настройки:

Когда пользователь посещает сайт, он видит страницу регистрации, все эти данные хранятся в базе данных sqlite3. После нажатия кнопки «Создать учетную запись» они перенаправляются на панель инструментов. В следующий раз, когда они посещают сайт, они должны перейти на страницу входа вместо страницы регистрации.

Но как мне это сделать?

Я использую Login_Manager

Это моя часть кода регистрации / логина

def index():
return redirect('signup', code=302)

@app.route('/login', methods=['GET', 'POST'])
def login():
form = LoginForm()
if form.validate_on_submit():
    user = User.query.filter_by(username=form.username.data).first()
    if user:
        if check_password_hash(user.password, form.password.data):
            login_user(user, remember=True)
            return redirect(url_for('dashboard'))
        else:
            return 'invalid user'


    #return form.username.data + ' ' + form.password.data

return render_template('login.html', form=form)


@app.route('/signup', methods=['GET', 'POST'])
def signup():
form = RegisterForm()
hashed_password = generate_password_hash(form.password.data, method='sha256')
if form.validate_on_submit():
    new_user = User(username=form.username.data, password=hashed_password)
    db.session.add(new_user)
    db.session.commit()

    return render_template('dashboard.html')


   # return form.username.data + ' ' + form.password.data

return render_template('signup.html', form=form)

1 Ответ

0 голосов
/ 07 июля 2018

Как уже упоминалось в комментариях, куки - это путь. Вот простая реализация во Flask:

Добавьте эти дополнительные операторы импорта:

from flask import request, make_response

Измените def index(), чтобы проверить, есть ли у пользователя cookie с именем пользователя:

@app.route("/")
def index():
    username = request.cookies.get('username')
    if username:
        return redirect('login', code=302)
    return redirect('signup', code=302)

Когда они регистрируются, создайте для них cookie:

@app.route('/signup', methods=['GET', 'POST'])
def signup():
    form = RegisterForm()
    hashed_password = generate_password_hash(form.password.data, method='sha256')
    if form.validate_on_submit():
        new_user = User(username=form.username.data, password=hashed_password)
        db.session.add(new_user)
        db.session.commit()

Вот новые строки. Мы сохраняем объект ответа, чтобы добавить к нему файл cookie и затем вернуть его.

        resp = make_response(render_template('dashboard.html'))
        resp.set_cookie('username', form.username.data)
        return resp

Это задокументировано в быстрый запуск в разделе куки .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...