BackEnd/spring

회원가입 로그인 구현

연향동큰손 2024. 8. 19. 21:30

우선 맴버를 정의 해준다( 로그인 아이디, 패스워드를 가짐)

package hello.login.domain.member;


import lombok.Data;

import javax.validation.constraints.NotEmpty;

@Data
public class Member {

        private Long id;

        @NotEmpty
        private String loginId; //로그인 아이디

        @NotEmpty
        private String name;

        @NotEmpty
        private String password;
}

@NotEmpty를 넣어 줌으로써 아이디 비밀번호의 공백을 방지해준다.

 

 

<MemberController>

@Controller
@RequiredArgsConstructor
@RequestMapping("/members")
public class MemberController {

    private final MemberRepository memberRepository;

    @GetMapping("/add")
    public String addForm(@ModelAttribute("member") Member member){
        return "members/addMemberForm";
    }

    @PostMapping("/add")
    public String save(@Valid @ModelAttribute Member member, BindingResult bindingResult){
        if (bindingResult.hasErrors()) {
            return "members/addMemberForm";
        }

        memberRepository.save(member);
        return "redirect:/";
    }
}

아이디, 비밀번호, 이름을 받아서 회원가입 후  MemberRepository에 저장

 

로그인 구현

 

로그인 시 필요한 정보 정의 

@Data
public class LoginForm {

    @NotEmpty
    private String LoginId;

    @NotEmpty
    private String password;
}

 

<LoginService>

@Service
@RequiredArgsConstructor
public class LoginService {

    private final MemberRepository memberRepository;

    /**
     * @return null 로그인 실패
     */
    public Member login(String loginId, String password){
     return memberRepository.findByLoginId(loginId)
             .filter(m ->m.getPassword().equals(password))
             .orElse(null);
    }
}

 

아이디, 패스워드를 입력받고 memberRepository에 입력받은 아이디로 등록된 회원이 존재하면 패스워드가 일치하는지 확인 후 로그인 성공

 

 

<LoginController>

@Slf4j
@Controller
@RequiredArgsConstructor
public class LoginController {
    private final LoginService loginService;

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

    @PostMapping("/login")
    public String login(@Valid @ModelAttribute LoginForm form, BindingResult bindingResult){

        if(bindingResult.hasErrors()){
            return "login/loginForm";
        }

        Member loginMember = loginService.login(form.getLoginId(),form.getPassword());

        if(loginMember == null){
            bindingResult.reject("loginFail","아이디 또는 비밀번호가 잘못됨");
            return "login/loginForm";
        }

        return "redirect:/";
    }
}

로그인에 실패하면 다시 loginForm으로 이동, 성공시 홈화면으로 리다이렉트 수행

 

 

 

 

<실행화면>

아무것도 입력하지 않고 로그인 할 경우 오류 메시지 표시

'BackEnd > spring' 카테고리의 다른 글

@Controller와 @RestController의 차이점  (0) 2025.02.23
SpringBean  (1) 2025.02.11
BeanValidation-Form 전송 객체 분리  (0) 2024.08.05
Bean Validation  (0) 2024.08.01
Validator 분리  (1) 2024.07.31