hem*_*vsn 8 java spring spring-security spring-el spelevaluationexception
我为我的Web应用程序完全配置了SPRING METHOD安全性.(启用了PRE/POST注释).
但最近我遇到了一个奇怪的问题.总结如下:
POJOS摘要
// User Class
public class User {
int id;
String name;
// getters and setters
}
// Group Class
public class Group {
int id;
String name;
// getters and setters
}
// GroupMembership class
public class GroupMembership {
private int id;
private User user;
private Group group;
// getters and setters
}
Run Code Online (Sandbox Code Playgroud)PreAuthorise过滤方法.
@PreAuthorize("canIEditGroupProfile(#membership.group.id)")
public int updateGroupMembership(GroupMembership membership)
throws GroupsServiceException;
Run Code Online (Sandbox Code Playgroud)传递完全填充的GroupMembership对象(存在适当的用户和组合成)时,安全筛选器将引发以下异常:
errorMessage: "Failed to evaluate expression
canIEditGroupProfile(#membership.group.id)'"
Run Code Online (Sandbox Code Playgroud)
在挖掘异常时:
原因是:
org.springframework.expression.spel.SpelEvaluationException:
EL1007E:(pos 33): Field or property 'group' cannot be found on null
Run Code Online (Sandbox Code Playgroud)
请提供相同的指示.
getter / setters似乎很好...也没有情况null。
但是有趣的观察;这给我一个错误:
@PreAuthorize("canIEditGroupProfile(#membership.group.id)")
public int updateGroupMembership(GroupMembership membership)
throws GroupsServiceException;
Run Code Online (Sandbox Code Playgroud)
这很好用:
@PreAuthorize("canIEditGroupProfile(#groupmembership.group.id)")
public int updateGroupMembership(GroupMembership groupmembership)
throws GroupsServiceException;
Run Code Online (Sandbox Code Playgroud)
我进一步观察到,参数名称在第一种情况下不匹配(即Service和ServiceImpl都具有不同的参数名称)。
现在保持一致性,该问题似乎已解决。
| 归档时间: |
|
| 查看次数: |
21826 次 |
| 最近记录: |