【问题标题】:How to Support Flask-SSE Access Control如何支持 Flask-SSE 访问控制
【发布时间】:2019-01-26 14:55:32
【问题描述】:

Flask-SSE 文档 --

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

从 Flask-SSE 的简单示例中,我不确定如何实现对这两种类型的 sse 端点的支持。

任何指针将不胜感激。

【问题讨论】:

    标签: python flask flask-login flask-sse


    【解决方案1】:

    我是 Flask-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)
    

    【讨论】:

      猜你喜欢
      • 2011-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-05
      • 1970-01-01
      • 2019-12-05
      相关资源
      最近更新 更多