Это своего рода вопрос с другого конца, но я подумал, что добавлю его, поскольку мне действительно пришлось покопаться в Интернете, чтобы узнать это.
Есть много вещей о том, как проверять роли, но не так много говорится о том, что вы на самом деле проверяете, когда вы говорите hasRole ("бла")
HasRole проверяет предоставленные полномочия для аутентифицированного в данный момент принципала
Итак, когда вы видите hasRole («бла»), на самом деле означает hasAuthority («бла») .
В случае, который я видел, вы делаете это с помощью класса, который реализует UserDetails, который определяет метод, называемый getAuthorities. Здесь вы в основном добавляете некоторые из них new SimpleGrantedAuthority("some name")
в список на основе некоторой логики. Имена в этом списке - это то, что проверяется операторами hasRole.
Я предполагаю, что в этом контексте объект UserDetails является в настоящее время аутентифицированным участником. Есть некоторая магия, которая происходит внутри и вокруг провайдеров аутентификации и, в частности, диспетчера аутентификации, который делает это.
SecurityContextHolderAwareRequestWrapper
экземпляр. Вы можете улучшить его, объяснив, как его получить, и немного пояснив сам ответ.