目前,我正在从事基于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非常相似,但是这一表达式无效; / 任何帮助将不胜感激:)