2016-02-10 1 views
0

У меня есть Users, которые создают HomeRepairTickets.Что такое хороший способ проверки доступа к моделям в спецификациях контроллера?

Firms может создать TicketBid с для HomeRepairTicket с их интересуют.

Если мой контроллер особое_разрешение обеспечить Firm s может только ставку на HomeRepairTicket с они имеют доступ? И убедитесь, что они могут только updateHomeRepairTicket s что они создали?

Или есть лучший способ проверить соответствующую проверку подлинности (например, что идентификаторы совпадают или что authentication_token матчей)

Я использую rspec.

ответ

0

Вы должны использовать внешний контроль доступа на основе авторизации/атрибута ().

ABAC - это модель авторизации, определенная NIST, которая позволяет вам описывать требования авторизации с точки зрения атрибутов и политик. Основываясь на ваш вопрос, вы хотели бы реализовать политику вдоль линий

A user can view a ticket if the ticket belongs to the same firm as the user. 

С ДКС вы можете иметь столько же политику, как вам нравится. Существует стандарт под названием XACML, который реализует ABAC, но я не верю, что в Ruby есть что-то, что реализует XACML.

Ваш лучший выбор - драгоценный камень CanCanCan, который предоставляет вам аналогичные возможности. Проверьте это here.

0

Короткий ответ на ваш вопрос: «да».

«Фирмы могут делать ставки только на HomeRepairTickets, к которым у них есть доступ», и «Фирмы могут обновлять HomeRepairTickets, которые они создали», являются хорошими функциональными требованиями (например, системным поведением). Вы должны обязательно пройти тестирование на этом уровне.

Теперь вы можете протестировать на более низких уровнях (например, соответствие токенов/идентификаторов и т. Д.) По мере развития, но всегда полезно вернуться к тестированию ваших требований высокого уровня и убедиться, что ваша система хорошо себя ведет.

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

 Смежные вопросы

  • Нет связанных вопросов^_^