| 로그인
Login Process
1. 아이디 비밀번호입력
2. js Fetch(POST)를 통해 Login Api Controller접속
3. db조회 후 회원관련 정보를 세션으로 등록
4. main페이지 이동시 세션이 등록되어있나 확인
5. 세션없이 주소창에 주소만 치고오면 로그인화면으로 보냄
6. 세션있으면 main페이지 접속
HTML
<form id="login-form">
<p>ID</p>
<input type="text" id = 'userId' name="userId" placeholder="Type your id">
<p>password</p>
<input type="password" id = 'userPw' name="userPw" placeholder="Type your password">
<label for="remember-check">
<input type="checkbox" id="remember-check">아이디 저장하기
</label>
<input type="button" id ="loginBtn" onclick="login()" value="Login">
</form>
JS
const userId = document.getElementById('userId');
const userPw = document.getElementById('userPw');
const loginBtn = document.getElementById('loginBtn');
function login(){
fetch('login/', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
"data":{
userId:userId.value,
userPw:userPw.value
}
}),
})
.then((response) => response.json())
.then((data) => {
//1:비밀번호 불일치 | 2:존재하지않는 계정 | 3:로그인성공
if (data == '3') {
location.href = "main"
} else if( data == '1'){
alert('비밀번호가 일치하지 않습니다');
} else{
alert('등록되지 않은 아이디입니다')
}
});
}
LoginApiController
@RestController
@RequestMapping("/login")
@RequiredArgsConstructor
public class LoginApiController {
private final LoginApiLogicService loginApiLogicService;
@PostMapping("")
public String login(@RequestBody Header<LoginApiRequest> request, HttpServletRequest httpServletRequest){
Map<String, MoneyMember> ck = loginApiLogicService.checkid(request);
String code = ck.keySet().toString().substring(1,2);
if(code.equals("3")){
HttpSession session = httpServletRequest.getSession();
session.setAttribute("loginType","origin");
session.setAttribute("memberId",ck.get(code).getId());
session.setAttribute("userId",request.getData().getUserId());
session.setAttribute("userPw",request.getData().getUserPw());
session.setAttribute("userName",ck.get(code).getUserName());
session.setAttribute("profileImage",ck.get(code).getProfileImage());
}
return code;
}
}
LoginApiLogicService
@Service
@RequiredArgsConstructor
public class LoginApiLogicService {
private final MoneyMemberRepository moneyMemberRepository;
// 1:비밀번호 불일치 | 2:존재하지않는 계정 | 3:로그인성공
public Map<String,MoneyMember> checkid(Header<LoginApiRequest> request){
//실제계정조회
Map map = new HashMap();
MoneyMember member = moneyMemberRepository.findByUserId(request.getData().getUserId())
.orElse(null);
if(member!=null){
if(member.getUserPw().equals(request.getData().getUserPw())) {
map.put("3",member);
}else{
map.put("1",null);
}
}else {
map.put("2",null);
}
return map;
}
}
❌사진무단도용금지❌
반응형
'웹 개발 > 🍃 SpringBoot' 카테고리의 다른 글
SpringBoot | 외부 경로 Resource 접근하기, 이미지 업로드 (0) | 2023.05.25 |
---|---|
SpringBoot | 카카오톡 간편로그인 구현 OAuth 2.0 (0) | 2023.05.24 |
SpringBoot | 연관관계가 있는 엔티티에서의 CRUD하는법 (0) | 2023.05.21 |
SpringBoot | CRUD 구현 - 글삭제(Delete) (0) | 2023.05.21 |
SpringBoot | CRUD 구현 - 제목변경(Update) (0) | 2023.05.21 |