@Fly3110
web developer

Как правильно сделать проверку прав в API?

Всем привет.

Есть API (rails) с определенным списком методов.
И есть пользователи с разными правами.

Незарегистрированные пользователи могут пользоваться одним списком функций
Зарегистрированным пользователям доступен больший список функций, но некоторые из этих функций могут быть применены только к своему пользователю.

Как принято организовывать проверку прав доступа? Надо проверять в каждом методе (ну, или в before_action), или как-то по другому в одном месте, например в ApplicationController все это надо проверять?

Заранее спасибо.
  • Вопрос задан
  • 298 просмотров
Пригласить эксперта
Ответы на вопрос 2
@vsuhachev
Я обычно аутентификацию вешаю на before_action, авторизацию указываю ручками для каждого метода каждого контроллера т.к. это проще. Так же я обычно правлю шаблоны скаффолдинга под текущий проект для того чтобы код авторизации генерился автоматом.

При использовании pundit можно на after_action повешать проверку была ли проведена авторизация(см. доки). Вкупе с тестами, покрывающими все экшены контроллеров, это проверка помогает не забыть сделать авторизацию.

Еще для политик pundit можно писать тесты, иногда это оправданно, если политики со сложной логикой.

Так же я видел проекты где тесты контроллеров для проверки авторизации выполнялись под разными ролями, но это, мне кажется, плохой подход т.к. много зависит от ручной работы по приведению в соответствие кода и тестов.
Ответ написан
Комментировать
Dem1
@Dem1 Куратор тега Ruby on Rails
Ruby on Rails developer
Мне нравится pundit, есть еще cancancan
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы