새 사용자가 '새 계정'양식을 제출 한 후 다음 페이지에서 로그인 할 필요가 없도록 해당 사용자를 수동으로 로그인하고 싶습니다.
스프링 보안 인터셉터를 통과하는 일반 양식 로그인 페이지는 잘 작동합니다.
새 계정 양식 컨트롤러에서 UsernamePasswordAuthenticationToken을 만들고 SecurityContext에서 수동으로 설정합니다.
SecurityContextHolder.getContext().setAuthentication(authentication);
같은 페이지에서 나중에 사용자가 다음으로 로그인했는지 확인합니다.
SecurityContextHolder.getContext().getAuthentication().getAuthorities();
이것은 인증에서 이전에 설정 한 권한을 반환합니다. 모든 것이 좋습니다.
그러나 내가로드 한 바로 다음 페이지에서이 동일한 코드가 호출되면 인증 토큰은 UserAnonymous입니다.
이전 요청에서 설정 한 인증을 유지하지 않은 이유가 명확하지 않습니다. 이견있는 사람?
- 세션 ID가 올바르게 설정되지 않은 것과 관련이 있습니까?
- 어떻게 든 내 인증을 덮어 쓸 수있는 것이 있습니까?
- 인증을 저장하려면 다른 단계가 필요한가요?
- 아니면 어떻게 든 단일 요청이 아닌 전체 세션에 걸쳐 인증을 선언하기 위해해야 할 일이 있습니까?
여기서 무슨 일이 일어나고 있는지 확인하는 데 도움이 될 몇 가지 생각을 찾고 있습니다.
SecurityContextHolder.getContext().setAuthentication(authentication)
. 작동하고 일반적이지만 그렇게하면 만나게 될 심각한 기능적 단점이 있습니다. 자세한 정보를 원하시면, 내 질문과 대답을 참조 stackoverflow.com/questions/47233187/...