JUST GO
[공통] login 본문
form.onsubmit : 입력한 이메일과 비밀번호를 POST 방식으로 '/member/login' 으로 전송. 응답 값에 대한 로직은 아직 미구현.
const xhr = new XMLHttpRequest();
const formData = new FormData();
formData.append('email', form['email'].value);
formData.append('password', form['password'].value);
xhr.open('POST', '/member/login');
xhr.onreadystatechange = () => {
if (xhr.readyState === XMLHttpRequest.DONE) {
Cover.hide();
if (xhr.status >= 200 && xhr.status < 300) {
const responseObject = JSON.parse(xhr.responseText);
switch (responseObject['result']) {
case 'success':
alert('성공');
break;
default:
alert('안돼씀');
Warning.show();
}
} else {
Warning.show('서버와 통신하지 못하였습니다. 잠시 후 다시 시도해 주세요.');
}
}
};
xhr.send(formData);
}
@ResponseBody
String MemberController. .postLogin (UserEntity user)
-> 주소 : /member/login
-> 방식 : POST
-> 응답 : MediaType.APPLICATION_JSON_VALUE
-> 기타 : XHR 요청에 대한 응답을 하기위해 존재하는 매핑
-> 로직 : 하기 MemberService.login(...) 메서드 호출 결과에 따라 응답은 따로하지 않고 (return null;) 서비스가 반환하는 값에 따라 단순히 System.out.println(...) 을 활용하여 로그인 성공/실패 여부를 출력.
@RequestMapping(value = "login",
method = RequestMethod.POST,
produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public String postLogin(UserEntity user){
Enum<?> result = this.memberService.login(user);
JSONObject responseObject = new JSONObject();
responseObject.put("result", result.name().toLowerCase());
return responseObject.toString();
}
Enum<? extends IResult> MemberService.login(UserEntity user)
-> 로직 : 전달 받은 UserEntity 타입 객체 'user' 가 가지는 'email' 및 'password' 에 대해 이들 두 개의 값과 일치하는 레코드에서 새로운 UserEntity 타입 객체 'user'가 가지는 'email' 및 'password'에 대해 이들 두 개의 값과 일치하는 레코드에서 새로운 UserEntity를 SELECT 하여, 이가 null 이면 로그인 실패(CommonResult.FAILURE), 어떠한 객체가 전달되었다면 로그인 성공(CommonResult.SUCCESS) 으로 판정하는 로직.
@Transactional
public Enum<? extends IResult> login(UserEntity user) {
UserEntity existingUser = this.memberMapper.selectUserByEmailPassword(user.getEmail(), CryptoUtils.hashSha512(user.getPassword()));
// 해싱된 비밀번호를 가져와야 한다.
if (existingUser == null){
return CommonResult.FAILURE;
}
return CommonResult.SUCCESS;
}
'Spring Boot > 학습내용' 카테고리의 다른 글
[공통] 게시글 (0) | 2022.11.14 |
---|---|
[공통] 세션 (0) | 2022.11.14 |
[공통] 비밀번호 재설정 (0) | 2022.11.09 |
[공통] 이메일로 전송된 링크 클릭시 그 링크에 포함된 ECS(Email, Code, Salt)로 구성된 EmailAuthEntity 와 일치하는 레코드의 'expired_flag' 값을 true 로 수정하는 여정 (0) | 2022.11.09 |
[공통] th:fragment (0) | 2022.11.08 |