[Java] Spring Boot을 통해 개별 로그인 처리를 하려는 경우

5815 단어 JavaSpring Boottech

개요


스프링 부트는 Spring Security 기능을 사용하여 로그인 처리를 편입할 수 있습니다.자세한 내용은 Spring Security with Spring Boot 2.0 간단한 Rest API 구현에 설명되어 있습니다.
이 글에도 있지만 로진의 API는 기본적으로 제공되기 때문에 따로 실시할 필요가 없다.다만, 다른 쪽에서 뭘 처리하면서 로그인 처리에 편입하고 싶은 경우도 있다고 생각합니다.이번에는 개별 로그인 처리 방법에 대해 설명한다.

대응 방법


Spring Security를 사용하여 사용자를 수동으로 인증하는 방법에 기재된 대로 수동으로 인증할 수 있습니다.인증된 내용을 SecurityContext로 설정하면 로그인 상태가 됩니다.

샘플


대체로 이 같은 보도의 복제품으로 실제 샘플도 첨부된다.위 보도와 다른 곳은 사용AuthenticationProvider된 곳이다.
SampleUserService.java

@Service
public class SampleUserService implements UserDetailsService {

  @Autowired
  UserRepository userRepository;
  @Autowired
  AuthenticationProvider authenticationProvider;

  @Override
  public UserDetails loadUserByUsername(final String email) {
    // emailでデータベースからユーザーエンティティを検索する
    UserDetails user = userRepository.findByEmail(email);
    if (user == null) {
      throw new UsernameNotFoundException("user not found");
    }
    return user;
  }

  // ユーザの手動認証
  public void authEmail(String email, String password) {
    // 認証
    UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(email, password);
    try {
      Authentication auth = authenticationProvider.authenticate(authenticationToken);
      SecurityContextHolder.getContext().setAuthentication(auth);
    }
    catch (Exception exception) {
      throw new AppException(HttpStatus.UNAUTHORIZED, "UnAuthorized");
    }
  }
  
}

좋은 웹페이지 즐겨찾기