[SPRING] 스프링 보안의 수동 인증 로직은 어디로 가야합니까? - 서비스 계층 또는 프리젠 테이션 계층?
SPRING스프링 보안의 수동 인증 로직은 어디로 가야합니까? - 서비스 계층 또는 프리젠 테이션 계층?
나는이 코드 조각을 가지고있다.
UserDetails userDetails = userDetailsServiceImpl.loadUserByUsername(email);
Authentication authentication = new UsernamePasswordAuthenticationToken(userDetails, userDetails.getPassword(), userDetails.getAuthorities());
SecurityContext securityContext = SecurityContextHolder.getContext();
securityContext.setAuthentication(authentication);
HttpSession session = request.getSession(true);
session.setAttribute("SPRING_SECURITY_CONTEXT", securityContext);
이것은 스프링 보안으로 사용자를 수동으로 인증하는 것입니다. 제 질문은이 코드를 어디에 두어야합니까? 이것을 서비스 레이어에 넣으면 AFAIK가 나쁜 서비스 레이어에 HttpSession 객체를 가져와야합니다. 내가 프레 젠 테이션 레이어에 인증 로직을 배치하는 것이 얼마나 좋은지 잘 모르겠습니다. 어떤 통찰력을 가진 사람 ??
미리 감사드립니다.
해결법
-
==============================
1.Luke Taylor의 질문에 대한 답변을 참조하십시오. 활성 사용자의 UserDetails를 얻는 최선의 방법은 무엇입니까? 이 유형의 일을 수행하는 커스텀 인터페이스를 생성하는 동안 스프링 보안으로부터 코드를 분리하여 유지하는 디자인의 이론적 근거. 예를 들어 MyAuthenticator라는 인터페이스를 작성하고 구현을 작성하여 애플리케이션에 삽입 할 수 있습니다.
Luke Taylor의 질문에 대한 답변을 참조하십시오. 활성 사용자의 UserDetails를 얻는 최선의 방법은 무엇입니까? 이 유형의 일을 수행하는 커스텀 인터페이스를 생성하는 동안 스프링 보안으로부터 코드를 분리하여 유지하는 디자인의 이론적 근거. 예를 들어 MyAuthenticator라는 인터페이스를 작성하고 구현을 작성하여 애플리케이션에 삽입 할 수 있습니다.
또한 스프링 보안 필터가 표준 인 경우 HttpSession 객체에 액세스 할 필요가 없습니다. 프레임 워크 필터가 처리합니다. 구현시 다음을 작성해야합니다.
UserDetails userDetails = userDetailsServiceImpl.loadUserByUsername(email); Authentication authentication = new UsernamePasswordAuthenticationToken(userDetails, userDetails.getPassword(), userDetails.getAuthorities()); SecurityContextHolder.getContext().setAuthentication(authentication);
"SPRING_SECURITY_CONTEXT"(HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY)는 이후 버전의 프레임 워크에서 변경 될 수 있으므로 사용하지 않는 것이 좋습니다.
from https://stackoverflow.com/questions/15484139/where-should-the-manual-authentication-logic-in-spring-security-go-service-lay by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 여러 트랜잭션 관리자를 단일 트랜잭션으로 처리 (0) | 2019.03.17 |
---|---|
[SPRING] Spring Framework 애플리케이션에서 Beans.xml 설정 파일 사용에 관하여 (0) | 2019.03.17 |
[SPRING] Jersey 2와 Spring을 Java 기반 구성과 통합 (0) | 2019.03.17 |
[SPRING] 스프링 부트 : PasswordEncoder를 지정하는 방법 (0) | 2019.03.17 |
[SPRING] JSF에서 다중 자원 번들 사용하기 (0) | 2019.03.17 |