Tomcat에서 사용자 지정 영역을 만들려고합니다. 내 문제는 SessionAttributeListener가 세션에 추가 된 객체가 직렬화 가능 여부를 확인하는 프레임 워크의 일부로 존재하며 세션이 무효화되는 등 문제가 발생하는 경우 해당 세션을 무효로하는 것입니다.Tomcat : java.security.Principal 구현
org.apache.catalina.realm.GenericPrincipal이 직렬화되지 않았기 때문에 Principal과 Serializable을 구현하는 자체 클래스를 작성하려고했습니다. 그럼 내가 그것에 대해 거짓, 사용자가해야 다른 역할을 얻을
request.isUserInRole("user")
사용하려고하는 경우를 제외하고이 잘 될 것 같다. 내 Valve 클래스에서 CustomPrincipal에 대한 GenericPrincipal을 교체하면 true를 반환합니다. 그래서 내 질문은 다음과 같습니다.
- false 반환의 원인은 무엇입니까?
- GenericPrincipal 대신 자신의 클래스를 어떻게 사용합니까?
- 이렇게해도 될까요? 편집
: 그것은 또한 Serializable를 구현 제외하고 그냥 명확하게하기 위해, 나는 실제로 이미 구현, CustomPrincipal의 코드는, 정확히 GenericPrincipal과 동일합니다.
request.setUserPrincipal(new CustomPrincipal(args...));
하지만 내가
request.setUserPrincipal(new GenericPrincipal(args...));
request.getUserPrincipal (에 대한 모든 호출을 수행 할 때) 반환 CustomPrincipal I을 내 밸브에 나가있을 때 에 request.isUserInRole ("사용자")는 false를 돌려줍니다 그 수업을 사용하고 있습니다.