[WEB]Back-end/Spring MVC

[SpringMVC 2편] Login 기능 추가하기.

이운형 2022. 2. 25. 11:09
반응형

# 인프런 김영한의 스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술 개인적으로 정리한 글입니다.

 

 

1. Login Form(도메인 같은 느낌) 생성하기 // 로그인시 전용 Form

@Data
public class LoginForm {

    @NotEmpty
    private String loginId;

    @NotEmpty
    private String password;

}

2. Login Repository 만들기 // 로그인시 사용될 DB와의 연관 관게 메소드 생성(DB와 Spring사이)

@Slf4j
@Repository
public class MemberRepository {

    private static Map<Long, Member> store = new ConcurrentHashMap<>();
    private static Long sequence = 0L;

    public Member save(Member member){
        member.setId(++sequence);
        log.info("save: member={}", member);
        store.put(member.getId(), member);
        return member;
    }

    public Member findById(Long id){
        return store.get(id);
    }

    public List<Member> findAll(){
        return new ArrayList<>(store.values());
    }
//
//    public Optional<Member> findByLongId(String loginId){
//        List<Member> all = findAll();
//        for(Member m : all){
//            if (m.getLoginId().equals(loginId)){
//                return Optional.of(m);
//            }
//        }
//        return Optional.empty();
//    }
    public Optional<Member> findByLoginId(String loginId){
        return findAll().stream()
                .filter(m -> m.getLoginId().equals(loginId))
                .findFirst();
    }
    public void clearStore(){
        store.clear();
    }

}

3. Login Service 생성하기// 로그인할 때 사용되는 기능들 (Spring과 서버사이) 

 

 

@Service
@RequiredArgsConstructor
public class LoginService {
    private final MemberRepository memberRepository;

//    public Member login(String loginId , String password){
//        Optional<Member> findMemberOptional = memberRepository.findByLoginId(loginId);
//        Member member = findMemberOptional.get();
//
//        if (member.getPassword().equals(password)){
//            return member;
//        } else{
//            return null;
//        }
//    }

    public Member login(String loginId, String password){
        return memberRepository.findByLoginId(loginId)
                .filter(m -> m.getPassword().equals(password))
                .orElse(null);
    }
}

 

반응형