Я создаю приложение Flask, которое использует Stormpath и Flask-Stormpath для auth. Я хочу, чтобы заблокированный пользователь не получал доступ к страницам/login или/register (поскольку это не имеет особого смысла - зарегистрированный пользователь не должен входить в систему, и вы зарегистрированы по определению, если вы уже вошли в систему). Я попытался решение в моем шаблоне пользовательские страницы Логин, делать что-то вдоль линий:Как остановить регистрацию пользователей от доступа к страницам входа/регистрации с помощью Flask-Stormpath?
{% block page_heading %}
{% if user.given_name %}
Already Logged in as {{ user.given_name }}
{% else %}
Enter your credentials
{% endif %}
{% endblock page_subheading %}
Если пользователь в настоящее время вошли в систему, user.given_name будет определен и блок page_heading возьмет «уже вошли в 'сообщении, а в противном случае - сообщение «введите свои учетные данные» (в обычном случае, когда пользователь, не прошедший проверку подлинности, пытается войти в систему). Я использую ту же конструкцию, чтобы показать форму входа или более текст ошибки. Тем не менее, эта попытка не работает: как будто user.given_name всегда возвращается к неопределенному, когда вошедший в систему пользователь посещает/регистрируется. Это подразумевает, что, если кто-то вошел в систему и посещает/регистрируется, они выходят из системы - это объясняет провал моей попытки решения.
Учитывая вышеизложенное и после консультаций с документами, я мог бы использовать is_authenticated(); но не через Flask-Stormpath, а через базовый модуль Flask-Login, поскольку Flask-Stormpath всегда устанавливает это для возврата True, для документов, но я понятия не имею, как это сделать.
Кроме того, мой подход взломан - я считаю, что лучшее решение будет находиться на стороне приложения Python.
Итак, мой вопрос заключается в следующем: какой самый разумный способ обнаружить пользователя входит в систему и дается это, не позволяет им получать доступ или перенаправлять их на страницы/login и/register? Может быть, есть волшебный декоратор где-то, что является противоположностью
@login_required
или stormpath встроенной в «несанкционированном» группы, которые я мог бы использовать как в
@groups_required(['unauthorised'])
Или, может быть, я по праву линии с моей первоначальной попыткой.
Любая помощь приветствуется :)
Обновление: Я просто попытался мой оригинальный подход (решение на основе шаблона) со страницей/регистра и получил желаемое поведение. Вещи все еще не работают для/login. Выглядит все более и более вероятно, что если вошедшие в систему пользователи посещают/регистрируются, они выходят из системы, а затем отображается страница входа в систему. Не знаю, как с этим бороться –