Hip*_*ppo 5 spring-security spring-data spring-boot
说明:
我想一起使用注释@Query,@Scheduled但我找不到办法.
问题是您需要进行身份验证才能@Query在查询中使用当前会话.但是在运行的方法中@Scheduled,没有身份验证.以下是显示问题的堆栈跟踪示例:
java.lang.IllegalArgumentException: Authentication object cannot be null
at org.springframework.security.access.expression.SecurityExpressionRoot.<init>(SecurityExpressionRoot.java:61)
at org.springframework.security.data.repository.query.SecurityEvaluationContextExtension$1.<init>(SecurityEvaluationContextExtension.java:108)
at org.springframework.security.data.repository.query.SecurityEvaluationContextExtension.getRootObject(SecurityEvaluationContextExtension.java:108)
at org.springframework.data.repository.query.ExtensionAwareEvaluationContextProvider$EvaluationContextExtensionAdapter.<init>(ExtensionAwareEvaluationContextProvider.java:463)
at org.springframework.data.repository.query.ExtensionAwareEvaluationContextProvider.toAdapters(ExtensionAwareEvaluationContextProvider.java:210)
at org.springframework.data.repository.query.ExtensionAwareEvaluationContextProvider.access$000(ExtensionAwareEvaluationContextProvider.java:59)
at org.springframework.data.repository.query.ExtensionAwareEvaluationContextProvider$ExtensionAwarePropertyAccessor.<init>(ExtensionAwareEvaluationContextProvider.java:235)
at org.springframework.data.repository.query.ExtensionAwareEvaluationContextProvider.getEvaluationContext(ExtensionAwareEvaluationContextProvider.java:107)
at org.springframework.data.repository.query.ExtensionAwareEvaluationContextProvider.getEvaluationContext(ExtensionAwareEvaluationContextProvider.java:59)
at org.springframework.data.couchbase.repository.query.StringN1qlBasedQuery.parseSpel(StringN1qlBasedQuery.java:237)
at org.springframework.data.couchbase.repository.query.StringN1qlBasedQuery.getStatement(StringN1qlBasedQuery.java:293)
at org.springframework.data.couchbase.repository.query.AbstractN1qlBasedQuery.execute(AbstractN1qlBasedQuery.java:94)
...
Run Code Online (Sandbox Code Playgroud)
此机制在Spring Boot中自动配置,org.springframework.boot.autoconfigure.security.SecurityDataConfiguration以便能够为经过身份验证的用户查询数据(通过SpEL).
我用的是什么:
@EnableAutoConfiguration我想要的是:
我不希望我的@Query方法能够使用SecurityEvaluationContextExtensionSpring Boot提供的方法,因为我没有在我的项目中使用它(没有实体链接到连接的用户).
为此,我想禁用SecurityEvaluationContextExtension自动配置SecurityDataConfiguration.
我尝试了什么:
SecurityEvaluationContextExtension在自定义Configuration类中重新定义bean 以返回nullbean(而不是new SecurityEvaluationContextExtension())但我不允许这样做.SecurityDataConfiguration但它没有定义为自动配置,它包含在类中SecurityAutoConfiguration:
SecurityDataConfiguration因为它不是AutoConfiguration类.SecurityAutoConfiguration从自动配置中排除所有这个类是否是个好主意(因为它还包括其他安全配置).| 归档时间: |
|
| 查看次数: |
259 次 |
| 最近记录: |