공부 39

[5회차 03] 로그인 - 예외처리

예외처리먼저 현재 회원가입되지 않은 값을 넣어 로그인해보면이처럼 500에러가 발생하고콘솔창에는 기대값은 1인데 아무것도 안나와 0이기에 EmptyResultDataAccessException이 발생하였습니다 (null값을 주지 않음)하지만 사용자에게는 절대 이러한 에러 페이지를 보여주면 안되기에 예외처리를 해보겠습니다 Tip 예외 코드를 보면 아래서부터 실행되는 것입니다 thread가 생성 -> javax.servlet 이 받고 springframework가 servlet을 땡겨와 dispatcher servlet -> RequestMapping -> 실행시켜 찾아온 곳이 우리가 작성한 패키지의 클래스와 메서드가 나오며 그중 제일 위에 끝난부분이 에러가 발생한 곳으로 우리가 수정할 수 있는 부분이 나옵..

[5회차 02] 로그아웃

로그 아웃main.jsp그리고 LoginController에서 setViewName을 main으로 하였으니 views폴더 안에 main.jsp를 생성해 줍니다 memberId = 그러고 위 코드처럼 로그인하면 memberId값이 나오게 해주고 로그인 버튼을 만들어줍니다로그아웃을 누르면 logout.do로 갑니다그러면 이제 LoginController에 logout.do를 만들러 가야겠죠?LoginController위에 말한 logout.do를 맵핑해주고 로그아웃을 했으면 세션값을 없애도록 추가해줍니다@RequestMapping("/logout.do")public ModelAndView logout(HttpServletRequest request) { ModelAndView mv = n..

[4회차 과제 03] 중복아이디 처리

과제 03중복아이디 알림이제 회원가입 시 중복 아이디면 회원가입 실패 메시지가 나오게 해보겠습니다MemberDao먼저 memberId값을 조회하는 쿼리를 작성합니다public String getMemberId(String memberId) { //아이디값 찾기 String sql = "SELECT member_id FROM forum.member WHERE member_id ='" + memberId + "'"; return queryForObject(sql, String.class);}이제 이걸 JoinService에서 실행시킵니다JoinServicepublic int join(HashMap params) { String passwd = params.get("pass..

[4회차 과제 02] NullPointException 처리하기

과제 02NullPointException 처리하기이제 인증을 완료하면 auth_yn이 "Y"로 바뀌었기 때문에 인증완료한 인증메일로 다시 접속하면 auth_yn = "N"라는 조건에서 걸리기에 500에러 화면이나오며 NullPointException이 발생합니다 그렇기에 이제 이 NullPointException 예외처리가 필요합니다JoinService예외처리는 간단하게 try-catch를 사용해 보겠습니다public boolean emailAuth(String uri) { boolean result; try { // true반환 MemberAuthDto memberAuthDto = memberAuthDao.getMemberAuthDto(uri); //인증 유효..

[4회차 과제 01] 인증 이메일 완료 후 DB auth_yn(인증여부) 바꾸기

과제 01인증 이메일 완료 후 DB auth_yn(인증여부)를 "Y"로 바꾸기전에 만든 회원가입 인증메일을 받고 인증하기를 하였을 경우 "인증 완료" 메시지는 나오지만 DB에 있는 인증여부(auth_yn)는 바꾸지 않았습니다 이걸 과제로 변경해 보겠습니다MemberAuthDaoMemberAuthDao에 update쿼리를 작성해보겠습니다처음에 WHERE 조건을 uri로 하려했다기 너무 길기도해서 seq로 했는데 문제 없이 작동 잘되었습니다. 쿼리문은 간단하게 작성하였습니다 forum의 member_auth 테이블에서 member_seq이 같으면 auth_yn = 'Y'로 변경 //인증 완료되면 auth_yn='y'로 바꾸기 public int updateAuthInfo(MemberAuthDto m..

[4회차 03] 인증 유효성 검사

인증 유효 검사인증 유효한지 검사 = 유효시간보다 작아야유효 시간 비교 => 숫자 timestamp자바에서 시간비교는 timestamp로 하며 sql에서는 DateTime으로 합니다그러므로 expire_dtm 쿼리의 Data Type을 DateTime으로 변경해 줍니다MemberAuthDaopublic int addAuthInfo(MemberAuthDto dto) { String sql ="INSERT INTO forum.member_auth " + "(member_seq, auth_num, auth_uri, reg_dtm, expire_dtm, auth_yn) " + "VALUES(" + dto.getMemberSeq() ..

[4회차 02] 인증메일 구조 만들기 - 회원가입시 인증 메일 발송

회원가입 시 인증 메일 보내기 설정java에서 메일을 발송 하려면 라이브러리가 2개 필요합니다 org.springframework spring-context-support 5.3.34 com.sun.mail javax.mail 1.6.2MVN repository에 가서 아래 3가지를 pom.xml에 추가해줍니다spring-context 5.3.34 (spring-context는 이미 전에 추가)javax.mail 1.6.2spring-context-support 5.3.34pom.xml 5.3.34 org.springframework spring-web ${spri..

[4회차 01] 인증메일 구조 만들기 - 인증번호 만들어 DB에 넣기

수업내용회원가입하면 이메일 보내기이메일 인증하기이메일 인증이메일 인증 장점인증을 하지 않으면 메인화면 접속을 막을 수 있다인증코드는 유니크 해야한다메일발송에 링크는 난수여야한다겹치면 A라는 사용자 인증해야하는데 B사용자가 인증이 될 수도 있다링크 클릭시 이게 A사용자인지 어떻게 아는가?링크와 사용자를 엮어줘야한다링크에 유효기간을 설정링크를 보냈지만 안누를 경우를 대비해 링크에 유효기간을 설정이 유효시간은 어떻게 관리할 것인가?사용자가 이 링크를 눌렀을때 유효한지 어떻게 체크할 것인가?Table (member_auth)auth_seq : 인증 시퀀스 올라가는 곳member_seq : 회원 번호auth_num : 인증 문자auth_uri : 인증용..

[3회차 06] 비밀번호 암호화

전에 회원가입해서 값을 DB에 넣는걸 해보았는데요이번에는 DB에 값을 넣을때 비밀번호값을 암호화해서 넣어보겠습니다 at.favre.lib bcrypt 0.10.2 먼저 암호화를 위해 https://mvnrepository.com 에서 BCrypt Password Hashing Function 라이브러리 최신버전을 pom.xml에 추가 & maven 업데이트 해줍니다public int join(HashMap params) { String passwd = params.get("passwd"); String encPasswd = BCrypt.withDefaults().hashToString(12, passwd.toCharArra..