Spring EL 没有 "principle" 认证

Spring EL no "principle" in authentication

我遇到了 Spring 文档与我所看到的实验结果之间的差异。我有一些方法,我需要在方法调用之前检查权限,并根据 spring 文档,我准备了以下内容:

@PreAuthorize("authentication.principle.company == #company.company")
public CompanyForm getCompanyForm(Company company) {
    //some code here
}

但令人惊讶的是,由于此错误,方法调用被拒绝:

org.springframework.expression.spel.SpelEvaluationException: EL1008E:(pos 15): Property or field 'principle' cannot be found on object of type 'org.springframework.security.authentication.UsernamePasswordAuthenticationToken' - maybe not public?

有人可以指出我的错误吗?

根据 Spring Security Javadocs,身份验证令牌中的字段是 principal。你拼错了。

@PreAuthorize("authentication.principal.company == #company.company")
public CompanyForm getCompanyForm(Company company) {
    //some code here
}