У меня есть RESTful API, написанный на пирамиде/карнизе. Он предоставляет API для клиента Ember.
Я следовал руководству по карнизам и у меня есть валидатор valid_token
, который я использую во многих представлениях. как методы классов ресурсов.
def valid_token(request):
header = 'Authorization'
token = request.headers.get(header)
if token is None:
request.errors.add('headers', header, "Missing token")
request.errors.status = 401
return
session = DBSession.query(Session).get(token)
if not session:
request.errors.add('headers', header, "invalid token")
request.errors.status = 401
request.validated['session'] = session
Теперь я хочу начать выборочно защищать ресурсы. Пирамидный способ, по-видимому, заключается в регистрации аутентификации/авторизации политики. Кажется, что ACLAuthorizationPolicy
обеспечивает доступ к хорошему инструментарию ACL в пирамиде. Однако похоже, что для работы пирамиды необходимы как политики аутентификации, так и политики авторизации. Поскольку я аутентифицируюсь с помощью своего валидатора, это меня смущает.
Могу ли я использовать ACL для управления авторизацией во время аутентификации с помощью моего карниза valid_token
валидатора? Нужно ли регистрировать политики проверки подлинности или авторизации пирамиды?
Я немного запутался, имея небольшой опыт использования ACL в пирамиде.