티스토리 뷰
JSP로 게시판 만들기 할때 해보고 스프링으로 처음 만들어보는 로그인!
jsp와는 다르게 스프링은 먼저 설정해 주어야 하는 것들이 많다!
그건 다 넣었다고 생각하고 포스팅 하기로 하자
스프링 설정 방법 포스팅은 다음으로
로그인 할 때 필요한 것
1. 해당 아이디와 비밀번호 정보가 DB에 있는지 확인
2. 해당 아이디와 비밀번호로 로그인이 가능한지
3. 로그인 한 아이디 유저의 정보 가져오기
1. 먼저 db 테이블에 등록된 컬럼들로 dto를 만들어주기
2. 로그인 jsp 작성
<form action="/login/login" method="post">
<div>
<h1 style="font-size: 68px;">Login</h1>
</div>
<div class="input_box">
<label for="userId"></label>
<input type="text" name="userId" id="userId" placeholder=" ID"><br>
</div>
<div class="input_box">
<label for="userPw"></label>
<input type="password" name="userPw" id="userPw"placeholder=" PASSWORD"><br>
</div>
<div class="input_box">
<label for="autologin"></label>
<input type="checkbox">자동 로그인
</div>
<br>
<div class="forget">
<a href="#">아이디 찾기</a> | <a href="#">비밀번호 찾기</a> | <a href="/login/join">회원가입</a>
</div>
<br>
<div class="loginbtn">
<button class="btn">Login</button><br>
</div>
</form>
3. userController 작성해주기
// 로그인 페이지 이동
@GetMapping("/login/login")
public void loginPage() {}
// 로그인 - true or false
@PostMapping("/login/login")
public String userlogin(HttpSession session, Users users) {
logger.info("{}", users);
// 로그인 인증
boolean isLogin = usersService.login(users);
Users info = usersService.getuserInfo(users);
if (isLogin) {
logger.info("userlogin() - 로그인 성공");
// 세션에 파라미터 값 저장
session.setAttribute("login", isLogin);
session.setAttribute("userno", info.getUserno());
session.setAttribute("userId", info.getUserId());
session.setAttribute("role", info.getRole());
logger.info("userno : {}",info.getUserno());
logger.info("userrole : {}",info.getRole());
// 메인 페이지로 리다이렉트
return "redirect:/login/main";
} else {
logger.info("userlogin() - 로그인 실패");
// 세션 삭제
session.invalidate();
// 로그인실패시 로그인 페이지로 리다이렉트
return "redirect:/login/login";
} // if(isLogin)문 end
} // userlogin() end
@RequestMapping("/login/logout")
// public String userLogout(HttpSession session) {
// logger.info("userLogout() - 로그아웃 성공");
// // 세션 삭제
// session.invalidate();
// // 메인페이지로 리다이렉트
// return "redirect:/login/main";
// }
- 로그인 하면 유저 아이디를 세션에 저장하고 저장된 아이디로 유저의 정보들을 저장해둔다.
- role은 관리자가 로그인 했을 때 유저와는 다르게 페이지 상단 부분에 관리자 페이지로 갈 수 있게 하려고 저장함
- 후에 인터셉터로 로그인 한 사용자만 페이지 이용할 수 있도록 구현할것임
4. userService
//유저 정보 가져오기
@Override
public Users getuserInfo(Users users) {
return usersDao.selectuserByUserId(users);
}
// 로그인 유무
@Override
public boolean login(Users users) {
// 파라미터 값을 가져와 dao에서 일치하는 행을 확인해야함.
// 매개변수 다시 확인해보기
int res = usersDao.selectCntByUserIdPw(users);
// 유저 유저 아이디로 role가져오기 (admin, user 구분)
String role = usersDao.selectroleByuseridpw(users);
if(res>0) {
logger.info("login() - 로그인 성공");
return true;
}else {
logger.info("login() - 로그인 실패");
return false;
}
}
5. userMapper.xml 구현
<select id="selectCntByUserIdPw" resultType="int" parameterType="com.kh.jaManChw.dto.Users">
SELECT count(*)
FROM USERS
WHERE USER_ID=#{userId} AND USER_PW=#{userPw}
</select>
<select id="selectuserByUserId" resultType="com.kh.jaManChw.dto.Users" parameterType="string">
SELECT *
FROM USERS
WHERE USER_ID=#{userId}
</select>
<select id="selectroleByuseridpw" resultType="String" parameterType="com.kh.jaManChw.dto.Users">
SELECT ROLE
FROM USERS
WHERE USER_ID=#{userId} AND USER_PW=#{userPw}
</select>
후에 다시 정리 필요함
'프로젝트 > finalproject' 카테고리의 다른 글
<input type=hidden> (0) | 2023.06.08 |
---|---|
<button>이 정상적으로 작동하지 않던 문제 (0) | 2023.05.28 |
프로젝트 회고 : 파이널 프로젝트 (0) | 2023.05.26 |
[23.05.14] Kakao소셜로그인 1 (0) | 2023.05.14 |
소셜로그인 - OAuth (0) | 2023.05.06 |