Це щось на зразок питання з іншого кінця, але я подумав, що кину це, оскільки мені справді довелося копатись в Інтернеті, щоб дізнатися це.
Є багато речей про те, як перевірити ролі, але не так багато, що говорить те, що ви насправді перевіряєте, коли ви скажете hasRole ("бла")
HasRole перевіряє надані повноваження на предмет справжньої довіреності
Тож насправді, коли ви бачите hasRole ("blah"), справді означає hasAuthority ("blah") .
У випадку, який я бачив, ви робите це з класом, який реалізує UserDetails, який визначає метод, який називається getAuthorities. У цьому ви в основному додасте кількаnew SimpleGrantedAuthority("some name")
до списку на основі певної логіки. Імена в цьому списку - це те, що перевіряється операторами hasRole.
Я думаю, що в цьому контексті об'єктом UserDetails є основний аутентифікований в даний час принцип. Існує якась магія, яка відбувається у постачальників аутентифікації та навколо неї, а точніше менеджер аутентифікації, який робить це.
SecurityContextHolderAwareRequestWrapper
екземпляр. Ви можете вдосконалити його, пояснивши, як його отримати, та ще більше роз’яснивши саму відповідь.