Мне нужно предоставить доступ на основе ролей для моих API REST, и я видел, что для этого мы можем использовать @PreAuthorize, @Secured
. Однако я не уверен, какие изменения я должен внести и получить это место, поскольку в настоящее время я использую custom token based authentication mechanism
для создания токена для сеанса и обрабатывать его сам.Как интегрировать Spring Security для доступа к URL-адресам на основе ролей
@RequestMapping(value = "login", method = RequestMethod.POST)
public @ResponseBody Result login(@RequestBody Credentials credentials) {
return loginService.login(credentials.getUsername(), credentials.getPassword());
}
Класс результата просто содержит сгенерированный токен для пользователя, который он будет передавать по каждому запросу.
Теперь любая идея, что изменения, которые я должен сделать, чтобы ограничить доступ к API, если пользователь находится в определенной роли
Например, если я хочу, чтобы ограничить API findById
быть доступны пользователем, только если он является частью из ADMIN_ROLE
, то мне придется добавить аннотацию PreAuthorize
, но я не уверен, как это определит роль пользователя и заблокирует пользователя автоматически.
@PreAuthorize("ADMIN_ROLE")
@RequestMapping(value = "{id}", method = RequestMethod.GET)
public @ResponseBody Group findById(@PathVariable int id) {
return groupParser.getGroupById(id, groupService.getGroupTree());
}
Я обрабатывать пользовательский маркер проверки подлинности на основе @RequestMapping (значение = "Войти", метод = RequestMethod.POST) общественного @ResponseBody Результат авторизации (@RequestBody Полномочия мандатной) { возврата loginService.login (credentials.getUsername (), credentials.getPassword()); } –
, пожалуйста, вместо объяснения конфигурации отправьте его :-) У вас будет гораздо более точный ответ, если вы так и сделаете. –
Спасибо @StefanoCazzola. Я внес некоторые изменения и добавил дополнительную информацию. –