SimpleEats 토이 프로젝트 (4)

유승선 ·2022년 10월 28일
0
post-thumbnail

Progress

progress(MemberController)

    @GetMapping("/login")
    public String login(@ModelAttribute("loginForm") LoginForm form){
        return "login";
    }

    @PostMapping("/login")
    public String loginUser(@Valid @ModelAttribute LoginForm form, BindingResult result){
        if(result.hasErrors()){
            return "login";
        }
        Member validatedMember = loginService.validate(form.getUserId(),form.getUserPassword());

        log.info("login? {}", validatedMember);

        if(validatedMember == null){
            result.reject("loginFail", "아이디 또는 비밀번호가 맞지않습니다");
            return "login";
        }

        return "redirect:/";
    }

멤버 컨트롤러의 로직을 업데이트 시켜주었다. 강의 내용을 참고하면서 만들었다. 강의 내용을 제대로 습득하고 활용하는게 목적이었기 때문에 큰 틀은 비슷할지 몰라도 내부적으로는 내 프로젝트에 맞춰서 변형시켜주었다. 원래 BindingResult 같은 보안을 위한 코드는 마지막에 사용해보고 싶었는데 로그인 서비스 같은 경우 필요할거 같아서 미리 넣어주었다.

progress(LoginService)

@Service
@Transactional(readOnly = true)
@RequiredArgsConstructor
public class LoginService {

    private final MemberRepository memberRepository;

    public Member validate(String userId, String userPassword){
        return memberRepository.findMember(userId,userPassword);
    }
}

로그인 서비스를 업데이트 시켜주었다, 로그인 서비스는 정말 서비스의 역활만 하는것으로 멤버 리포지토리를 DI 받아서 사용하고 있는것을 확인 가능하다. 그리고 멤버 리포지토리에 업데이트를 시켜주었는데,

해당 로직을 올려주었다. 잘 사용한지 확실하지 않지만 전에 강의에서는 멤버 리스트를 반환하기 위해서 사용되었지만 나같은 경우 JPA 를 활용해서 로그인 로직을 처리해주었다. 솔직히 확실하지 않았던 부분 몇개가 만약 WHERE 문이 여러개를 선택하려고 할때 파라미터를 여러개 넣는 방법이 있을까 싶었는데 그냥 매서들를 여러번 호출시켜주었다.

한가지 더 배운거는 쿼리로 얻게되는 목록을 리스트로 받을수도 있지만 저렇게 getSingleResullt() 하게되면은 타입 하나만 받기때문에 굉장히 편하다고 느꼈다. JPQL 정리 참고해도 좋을거같다.

결과 화면


Error

Error

이번에는 크게 에러가 나오지는 않았다. 다만 JPQL 을 사용해줄떄 "Select m from Member Where .." 이렇게 썼는데 에러가 났다. 자세히 살펴보니 m을 써줄때 Member 뒤에도 m 을 써주니깐 고쳐졌다. 이 부분을 헷갈려하지 않았으면 좋겠다.


배운점, 고칠점

스프링 실력이 늘어가는게 느껴져서 뿌듯하다. 아직까지 이렇다 하는 기능이 가능한건 아니지만 그래도 꾸준히 하면서 기능을 계속 추가해보고 싶다. 다음번에는 쿠키를 이용한 사용자 정보 저장을 해볼 생각이다. 비록 쿠키는 안전한 방법이 아닌걸 알지만 나중에 나아가면서 세션도 구현해보고 필터도 구현해보고 싶다. 당장 역량을 더 키우고 싶다.

profile
성장하는 사람

0개의 댓글