Как исправить вход в систему и выход из системы в шаблоне jinja на основе пользовательской сессии? - PullRequest
0 голосов
/ 25 сентября 2019

Моя система входа работает хорошо с точки зрения соединения с БД.Тем не менее, как-то мой шаблон jinja показывает account/logout, как только пользователь загружает сайт вместо login/register.Но когда пользователи переходят на account, они переходят на login.Другими словами, все наоборот.

Я выполнил следующее условие:

{% if session['email'] == None %}
          <li class="nav-item">
            <a class="nav-link" href="{{url_for('login')}}">Login</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="{{url_for('register')}}">Register</a>
          </li>
          <!--WILL DISPLAY HOME/LOGIN/REGISTER WHEN LOGGED IN-->
          {% else %}
          <li class="nav-item">
            <a class="nav-link text-success" href="{{url_for('user')}}">Account</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="{{url_for('logout')}}">Logout</a>
          </li>
          {% endif %}

Кроме того, я почти уверен, что шаблон не проблема, скореефункция входа, которую я пытаюсь исправить, но безуспешно:

@app.route('/login', methods=['POST', 'GET'])
def login():
    if request.method == 'GET': 
        return render_template('login.html')
    else:
        user = mongo.db.user
        login_user = user.find_one({
        'email': request.form.get('email'), 
        'password':request.form.get('password'
        )})

        if login_user:
            session['email'] = login_user['email']
            session['name'] = login_user['name']
            return redirect(url_for('user'))

        return 'Invalid username or password combination'

Ответы [ 2 ]

0 голосов
/ 29 сентября 2019

Ответ на этот вопрос следующий:

{% if not session['email'] %}
          <li class="nav-item">
            <a class="nav-link" href="{{url_for('login')}}">Login</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="{{url_for('register')}}">Register</a>
          </li>
          <!--WILL DISPLAY HOME/LOGIN/REGISTER WHEN LOGGED IN-->
          {% else %}
          <li class="nav-item">
            <a class="nav-link text-success" href="{{url_for('user')}}">Account</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="{{url_for('logout')}}">Logout</a>
          </li>
          {% endif %}
0 голосов
/ 25 сентября 2019

Вероятно, что электронная почта не является атрибутом сеанса, который делает сеанс ['email'] неопределенным.

Если условие может быть

{% if session['email'] is not defined or session['email']|length  == 0 %}

Я бы предпочел, чтобы условие if было более положительным по разложению

{% if session['email'] is defined and session['email']|length %}
// logout template 

Неопределенные типы

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