Spring Security提供了一些方便的方法控制注释:
@PreAuthorize("hasRole('ADMIN')")
@PreAuthorize("hasAuthority('ROLE_ADMIN')")
@PreAuthorize("hasPermission('ADD')")
我想用
这样的自定义方法扩展它 @PreAuthorize("hasCompany('XX')")
及其验证数据应来自JWT令牌。
有人可以帮忙吗?
答案 0 :(得分:2)
有几种方法可以做到,但是@Andrew提到的会更容易。只是指出您说要检查您的JWT令牌是否具有特定的公司“ XX”,那么它将是
set apps=
for /d %%s in (".\manifests\*.xml") do (
for /f "tokens=*" %%g in ('xml sel -t -v "\apps\app" %cd%\manifests\%%s') do (
echo Found app - %%g [inside %%s]
rem First idea below:
set apps[%%g]=true
)
)
rem How to iterate apps afterwards?
在yourBeanName实例内部,您需要实现一种从中提取公司信息并比较两者的方法,
或者,也许您可以做类似的事情
@PreAuthorize("@yourBeanName.customMethod(authentication)")
与普通SpringEL可以使用oauth2访问令牌进行的操作相同。
为此,
答案 1 :(得分:1)
您可以在自定义bean实现@PreAuthorize("@yourBeanName.customMethod(authentication.principal.username)")