【问题标题】:passing dynamic input to flask-user @roles_required decorator将动态输入传递给 flask-user @roles_required 装饰器
【发布时间】:2021-04-09 00:04:15
【问题描述】:

上下文:

我想将访问用户页面的权限仅限于该用户。因为我不知道用户的名字,所以我不能在 roles_required 装饰器中指定他们的名字。

所以我现在正在做的是使用flask-user 为用户分配一个角色,并使用@roles_required 装饰器来限制对该用户的访问。仅供参考,我将角色名称设置为 users_id(uuid)

问题:

我无法在 roles_required() 装饰器中对用户角色 ID 进行硬编码。我怎么可能将它设置为一个变量?这样我就可以对我的数据库进行查询以检查该用户是否应该能够访问

@route('/api/<userid>') 

@roles_required('<userid>') #38096c6c-fd3d-44fc-8918-b2632b41540e

    def my_homepage():
        return "hello world"

问题是因为我在动态创建路由,因为每个用户都有自己的页面(这是他们的 uuid),我无法硬编码所需的角色,因为它取决于页面地址

我愿意接受其他路线的建议。我只想要最后最干净的解决方案

【问题讨论】:

    标签: python flask flask-restful flask-login flask-user


    【解决方案1】:

    我只是在视图中做:

    @route('/api/<userid>') 
    def my_homepage(userid):
        if current_user.id != userid:
            abort(403, "You can't access that")
    

    【讨论】:

      猜你喜欢
      • 2017-12-13
      • 2017-12-13
      • 1970-01-01
      • 2011-02-22
      • 2019-01-25
      • 2016-02-14
      • 2021-12-23
      • 2021-11-15
      相关资源
      最近更新 更多