簡體   English   中英

Flask-Login 未授權端點重定向到錯誤頁面

[英]Flask-Login unauthorized endpoint redirects to wrong page

我正在使用 Flask-Login 來管理對使用@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-User v0.7、Flask-Login v0.4.1。

事實證明,問題是我已經登錄了。當用戶嘗試訪問他們缺乏權限的路由時,他們首先被發送到登錄處理程序,但是,由於已經登錄,他們被重定向到應用程序主頁,而無需點擊登錄頁面並觸發閃爍的消息。

為了解決這個問題,我重構了應用程序,將登錄信息發送到應用程序儀表板以及未經授權的訪問嘗試,並在該頁面上同時顯示登錄成功和 role_required 失敗。

在這個適當的解決方案之前,我已經辭職並簡單地補充說:

{% 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 %}

到我的主頁,所以至少閃爍的消息正在顯示並且沒有備份。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM