[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);
}
}
반응형