Flask - 如果当前用户未通过身份验证,如何重定向到登录页面?

Posted

技术标签:

【中文标题】Flask - 如果当前用户未通过身份验证,如何重定向到登录页面?【英文标题】:Flask - How to redirect to login page if the current user is not authenticated? 【发布时间】:2019-09-02 16:09:42 【问题描述】:

我的load_user 函数是这样的:

@login_manager.user_loader
def load_user(user_id):
    u = None
    # user_id is represented as a json-formatted string
    try:
        user = json.loads(user_id)
        u = load_user_from_backend(user.get('user_id'), user.get('password'))
    except:
        return None
    return u

laod_user 返回 None 值时,我希望将当前用户重定向回login 页面。我如何实现这一目标?谢谢。

【问题讨论】:

Redirecting to URL in Flask的可能重复 不要这样做except:它会隐藏错误 【参考方案1】:

没有什么是 if 语句无法处理的。不过,这当然不是处理用户身份验证的最佳方法。

result = load_user(user_id)
if result is None:
    return redirect(url_for('login'))

【讨论】:

可能值得将它变成一个装饰器,以获得更便携但远非全面的解决方案

以上是关于Flask - 如果当前用户未通过身份验证,如何重定向到登录页面?的主要内容,如果未能解决你的问题,请参考以下文章

如果用户未通过身份验证,Apache 2.x 和 mod_proxy 会产生重定向循环

Laravel - 用户未通过身份验证时如何重定向到所需页面

如果用户未使用中间件进行身份验证,Laravel 5.4 将重定向到特定页面

如果未通过身份验证,Quarkus 会提供重定向 url

Vue SPA - 检查用户是不是通过身份验证,如果没有则重定向到登录

django,身份验证后重定向到ajax操作