Spring Security: подразумевает ли роль «edit» неявно, что пользователь может читать? - PullRequest
0 голосов
/ 14 сентября 2018

Я реализую авторизацию для службы REST, используя Spring Security.У меня есть роли, которые можно сгруппировать в группы ролей.

В частности, у меня есть VIEW_EMPLOYEE и EDIT_EMPLOYEE роли.

У меня есть EmployeeController с двумя конечными точками: readEmployee иupdateEmployee.Конечная точка updateEmployee защищена ролью EDIT_EMPLOYEE с помощью следующей аннотации Spring Security: @Secured(EDIT_EMPLOYEE).

У меня вопрос по поводу readEmployee: нужно ли защищать ее с помощью обоих VIEW_EMPLOYEE и EDIT_EMPLOYEE роли?Или просто с VIEW_EMPLOYEE?

@Secured({VIEW_EMPLOYEE, EDIT_EMPLOYEE /* do I need it here? */})
@GetMapping("/employees/{id}")
Employee readEmployee(@PathVariable Long id) {
    // ...
}

@Secured(EDIT_EMPLOYEE)
@PostMapping("/employees/{id}")
Employee updateEmployee(@PathVariable Long id, Employee employee) {
    // ...
}

Первый подход кажется мне более естественным: в пользовательском интерфейсе моего приложения, чтобы редактировать сотрудника, я должен сначала прочитать его.Это означает, что роль EDIT_EMPLOYEE должна также неявно позволять читать сотрудника.

С другой стороны, второй подход (только с VIEW_EMPLOYEE) выглядит более понятным: в будущем каждый раз, когда я создаю новыйread* конечная точка, я не должен иметь в виду, что мне нужно добавить к ней также роль EDIT_*.

Есть ли лучшая практика, какой подход использовать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...