代码之家  ›  专栏  ›  技术社区  ›  Logan Bertram

flask登录未经授权的终结点重定向到错误的页面

  •  1
  • Logan Bertram  · 技术社区  · 7 年前

    我正在使用flask登录来管理使用 @roles_required 装饰师。当我尝试访问我没有访问权限的路由时,我被重定向到应用程序的主页 example.com 没有适当的信息被闪现。但是,如果我注销,我被重定向到的登录页面会显示所有闪烁的消息,这些消息告诉我无法访问我试图访问的路由。如果我尝试访问6页,6条消息将等待我。

    我已更新配置文件,包括:

    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用户v0.7,flask登录v0.4.1。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Logan Bertram    7 年前

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

    为了解决这个问题,我重新构造了应用程序,将登录信息发送到应用程序仪表板以及未经授权的访问尝试,并刷新了登录成功和该页面上的角色“所需的失败”。

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

    {% 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 %}
                    <div class="alert alert-{{category}}">{{ message|safe }}</div>
                {% endfor %}
            {% endif %}
        {%- endwith %}
    {% endblock %}
    

    到我的主页,这样至少会显示闪现的消息,而不会备份。