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