Задать вопрос
@Fly3110
web developer

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

Всем привет.

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

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

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

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

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

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

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

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

Похожие вопросы