передача динамического ввода в декоратор @roles_required flask-user

Контекст:

Я хочу ограничить доступ к странице пользователя только пользователю. поскольку я не знаю имен пользователей, я не могу указать их имя в декораторе role_required.

Итак, что я сейчас делаю, это использование flask-user для назначения роли пользователю и использование декоратора @roles_required для ограничения доступа только для этого пользователя. К вашему сведению, я устанавливаю имя ролей на users_id (uuid)

Проблема:

Я не могу жестко запрограммировать идентификатор роли пользователя в декораторе role_required (). Как я могу установить это в переменную? чтобы я мог сделать запрос к моей базе данных, чтобы проверить, должен ли этот пользователь иметь доступ

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

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

    def my_homepage():
        return "hello world"

проблема в том, что я динамически создаю маршрут, потому что у каждого пользователя есть собственная страница (которая является их uuid), я не могу жестко указать требуемую роль, поскольку она зависит от адреса страницы

Я открыт для предложений пойти другим путем. я просто хочу самое чистое решение в конце


person RooneyMUFC    schedule 02.01.2021    source источник


Ответы (1)


Я бы просто сделал это в представлении:

@route('/api/<userid>') 
def my_homepage(userid):
    if current_user.id != userid:
        abort(403, "You can't access that")
person dmitrybelyakov    schedule 03.01.2021
comment
Идеально это работает - person RooneyMUFC; 05.01.2021