이 문제를 해결하는 데 어려움이 있습니다.스프링 보안 데이터베이스 인증 캐스팅 스프링 사용자 - 도메인 사용자
사용자가 조직화되어있는 다중 점유 시스템이 있습니다. 해당 조직 내에서 사용자 이름은 고유해야합니다. 그렇지 않으면 두 조직이 동일한 사용자 이름을 가질 수 있습니다.
jdbc-user-service와 관련된 스프링 보안이 제대로 작동합니다. 내 문제는 현재 사용자를 얻으려고 할 때 시작됩니다.
스프링 3과 Principal 객체를 메서드 매개 변수로 사용하는 a link을 살펴 보았습니다. 교장이 충분한 정보를 갖고 있지 않다는 것을 제외하면 이것은 훌륭하게 작동합니다! 첫째, 내 유스 케이스에서는 사용자 이름이 고유하지 않으며 사용자가 속한 조직에 쉽게 액세스 할 수 있습니다.
조금 더 자세히 검색합니다 this 멋진 답변입니다. 이 문제는 이전과 같은 문제입니다. 단지 충분한 정보가없는 Principal 객체에 의존합니다.
@Override
public Object resolveArgument(MethodParameter methodParameter,
ModelAndViewContainer mavContainer,
NativeWebRequest webRequest,
WebDataBinderFactory binderFactory) throws Exception {
if (this.supportsParameter(methodParameter)) {
Principal principal = webRequest.getUserPrincipal();
return (User) ((Authentication) principal).getPrincipal();
} else {
return WebArgumentResolver.UNRESOLVED;
}
}
내 자신을 사용할 수있는 사용자 개체를 대체 할 수있는 좋은 방법이 있나요 (여기에 마술이다)? 사용자 정의 UserDetailService 작성에 어려움이 있습니까? 이 길을 걷는 것보다 더 나은 접근법이 있습니까?
감사
추출 할 수있는 사용자 개체
을 반환 사용자 정의 UserDetailsService의 확인? 예를 들어 '사용자 이름'으로 게임을 할 수 있다는 것을 알고 있습니다. 조직에 문자열 고양이가 있거나 일종의 문자열로 사용자 ID를 변환하여 사용할 수 있지만 사용자 이름별로로드되지 않습니다. 메서드 이름) – tfecw
예, 무시합니다. 조직 전체에 걸쳐 중복 된 사용자 이름을 갖는 것이 좋겠지 만 조직이 무엇인지 파악하여 사용자 이름과 결합 할 수있는 방법이 필요합니다. 나는 사용자 이름을 유일하게 지명 할 것이다. 답변 해주셔서 감사합니다! – tfecw