码农家园

关闭
导航

关于python:Flask-Login未经授权的端点重定向到错误的页面


flaskflask-loginpython

Flask-Login unauthorized endpoint redirects to wrong page

我正在使用Flask-Login来管理使用@roles_required装饰器的路径访问。 当我尝试访问我无法访问的路由时,我将重定向到example.com的应用程序主页,并且没有相应的消息闪烁。 但是,如果我注销,我重定向的登录页面会显示所有闪烁的消息,告诉我我无法访问我尝试访问的路由。 如果我试图访问6页,则会有6条消息等待我。

我已更新配置文件以包含:

1
2
3
4
5
USER_AFTER_REGISTER_ENDPOINT    = 'confirm_email'
USER_UNCONFIRMED_EMAIL_ENDPOINT = 'confirm_email'
USER_UNAUTHENTICATED_ENDPOINT   = 'user.login'
USER_UNAUTHORIZED_ENDPOINT      = 'user.login'
USER_AFTER_CONFIRM_ENDPOINT     = 'onboarding'

除了我的USER_UNAUTHORIZED_ENDPOINT之外,所有这些端点都按预期运行。

我的意图是@role_required失败被视为与@login_required失败相同,我相信只修复此重定向问题应解决我的消息闪烁问题。

我目前正在使用Flask v1.0.2,Flask-User v0.7,Flask-Login v0.4.1。


事实证明,问题是我已经登录了。当用户试图访问他们缺少权限的路由时,他们首先发送到登录处理程序,但是,在已经登录后,他们被重定向到 应用程序主页没有访问登录页面并触发闪烁的消息。

为了解决这个问题,我重新构建了应用程序,以便将登录发送到应用程序仪表板以及未经授权的访问尝试,并在该页面上刷新登录成功和role_required失败。

在这个正确的解决方案之前,我已经辞职了,并简单地补充说:

1
2
3
4
5
6
7
8
9
10
11
12
{% block home_flash %}
    {%- with messages = get_flashed_messages(with_categories=true) -%}
        {% if messages %}
            {% for category, message in messages %}
                {% if category=='error' %}
                    {% set category='danger' %}
                {% endif %}
                {{ message|safe }}
            {% endfor %}
        {% endif %}
    {%- endwith %}
{% endblock %}

到我的主页,所以至少闪烁的消息显示并且没有备份。


Copyright ©  码农家园 联系:[email protected]