Ant*_*nyi 1 java spring spring-security spring-data-jpa
我想从得到的数据CrudRepository用于RestResource由JPA查询:
public interface IContactRepository extends PagingAndSortingRepository<Contact, Long> {
@Query("select contact from Contact contact where contact.owner.login = ?#{principal.username}")
@RestResource( path = "my")
List<Contact> findByOwner();
}
Run Code Online (Sandbox Code Playgroud)
但我明白了:
在'java.lang.Object []'类型的对象上找不到属性或字段'principal' - 可能不公开?
我可以直接获得校长:
SecurityContextHolder.getContext().getAuthentication().getPrincipal()
Run Code Online (Sandbox Code Playgroud)
但我需要在界面内直接访问RestResource.
我遇到了同样的问题,我通过这样做来修复它:
提供SecurityEvaluationContextExtension类型的bean
正如文件所说.
以下是doc中的Java和XML配置:
Java配置
@Bean
public SecurityEvaluationContextExtension securityEvaluationContextExtension() {
return new SecurityEvaluationContextExtension();
}
Run Code Online (Sandbox Code Playgroud)
XML配置
<bean class="org.springframework.security.data.repository.query.SecurityEvaluationContextExtension"/>
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助 :)
| 归档时间: |
|
| 查看次数: |
1302 次 |
| 最近记录: |