Spring EL复杂逻辑语句

时间:2018-08-15 15:33:17

标签: java spring spring-security spring-el

目前,我正在从事基于Spring角色的项目。我想在我的其余存储库中限制对deleteById方法的访问:

@RepositoryRestResource
public interface UserRepository extends CrudRepository<User, Long> {

    @Override
    @PreAuthorize("(hasRole('ROLE_USER') and @userRepository.findById(#id).get()?.username == principal.username) or hasRole('ROLE_ADMIN')")
    void deleteById(@Param("id") Long id);
}

我要表达的是:用户只能删除自己的帐户,而管理员可以删除所有帐户。在春季启动期间,发生故障:

  

原因:java.lang.IllegalArgumentException:无法评估表达式'hasRole('ROLE_USER')和...

该表达式看起来与this one非常相似,但是这一表达式无效; / 任何帮助将不胜感激:)

0 个答案:

没有答案