我正在使用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。
答案 0 :(得分:0)
原来的问题是,我已经登录了。当用户尝试访问他们缺乏权限的路由时,他们首先被发送到登录处理程序,但是已经登录,他们是重定向到应用程序主目录,而无需单击登录页面并触发闪烁的消息。
为解决此问题,我对应用程序进行了重组,以将登录信息以及未经授权的访问尝试发送至应用程序仪表板,并在该页面上刷新登录成功和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 %}
到我的主页,因此至少闪烁的消息正在显示并且没有备份。