[英]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.