我正在创建一个有4个角色的应用程序。我的数据库中没有存储权限,只有角色。
在控制器级别,我将路由仅限于某些角色,例如:
@PreAuthorize("hasRole('ADMIN')")
在我的服务方法中,我根据需要做了更彻底的检查。
然而,我在服务中使用授权条件的问题是,它只在SecurityContextHolder.getContext()
不为null时才有效。
我意识到这可能是这样的,例如,在我与Jobrunr的一份工作中。
所以我将我的服务注入到我的作业中,我想调用一个方法,但它崩溃了,因为它无法检索经过身份验证的用户。
是否有一种方法可以在作业中手动验证用户,这是一种好方法吗?
1条答案
按热度按时间e4yzc0pl1#
您可以 Package 由
DelegatingSecurityContextRunnable
提交给Jobrunr的Runnable
它要求您定义
SecurityContext
以运行Runnable
,并且它将负责在运行任务之前和之后设置和清理SecurityContext
。在配置
SecurityContext
时,最好与现有使用的身份验证机制保持一致,以定义一个具有足够权限来运行作业的Authentication
对象。下面是一个入门示例: