Есть несколько способов сделать это, но то, что упомянул @Andrew, будет проще.Просто отметив, что вы сказали, что хотите проверить, имеет ли ваш токен JWT определенную компанию "XX", тогда это будет
@PreAuthorize("@yourBeanName.customMethod(authentication)")
и внутри вашего экземпляра yourBeanName вам нужно реализоватьметод извлечения информации о компании из нее и сравнения этих двух,
Или, возможно, вы можете сделать что-то вроде
@PreAuthorize("#oauth2.hasCompany('XX')")
так же, как и обычный SpringELoauth2 токен доступа.
Чтобы сделать это,
- вам необходимо реализовать свой собственный DefaultMethodSecurityExpressionHandler (проверьте для сравнения OAuth2MethodSecurityExpressionHandler)
- , и когда вы реализуете метод createEvaluationContextInternal (), вам потребуется новыйОбработчик выражений OAuth2, а не OAuth2SecurityExpressionMethods, поскольку у него нет пользовательского метода hasCompany ().Просто создайте новый класс, который расширяет OAuth2SecurityExpressionMethods, добавьте метод hasCompany () и вставьте его в новый DefaultMethodSecurityExpressionHandler.