如何支持瓶-SSE访问控制

问题描述 投票:0回答:1

瓶SSE-DOC -

https://flask-sse.readthedocs.io/en/latest/advanced.html#access-control

有一个小的访问控制的例子 -

@sse.before_request 
def check_access():
    if request.args.get("channel") == "analytics" and not g.user.is_admin():
        abort(403)

我的使用情况是:我有两个类型的SSE端点,一类是公共的,说下路线/sse/public/notice,不需要身份验证检查;并与路线私房/sse/private/<user_id>/balance,我必须同时检查flask_login.current_user.is_authenticated and flask_login.current_user.get_id() == user_id

从瓶-SSE的简单的例子,我不知道我怎样才能实现支持两种类型的SSE端点。

任何指针将不胜感激。

python flask flask-login
1个回答
1
投票

我瓶-SSE的作者。为什么不这样做?

@sse.before_request 
def check_access():
    channel = request.args.get("channel") or "sse"
    if channel.startswith("private."):
        if current_user.is_anonymous:
            abort(401)
        user_id = channel[8:]
        if current_user.get_id() != user_id:
            abort(403)
© www.soinside.com 2019 - 2024. All rights reserved.