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 }
method のフィルタを PreAuthorise します。
@PreAuthorize("canIEditGroupProfile(#membership.group.id)") public int updateGroupMembership(GroupMembership membership) throws GroupsServiceException;
完全に設定されたGroupMembership
オブジェクト (適切なユーザーとグループの構成が存在する) を渡すと、セキュリティ フィルターは次の例外をスローします。
errorMessage: "Failed to evaluate expression
canIEditGroupProfile(#membership.group.id)'"
例外を掘り下げると:
原因は次のとおりです。
org.springframework.expression.spel.SpelEvaluationException:
EL1007E:(pos 33): Field or property 'group' cannot be found on null
同じことに対処するためのポインタを提供してください。