코딩 43

Springboot 게시판 글쓰기!(2) only text version

이제 게시글을 쓸건대 boardservice를 만들고 save를 이용해서 넣어준다 편리하다 진짜! restcontroller 만들어주고 고민인 게 여기서도 한번 emailcheck로직을 걸어줘야 할지 고민이다 일단 그냥 가는 걸로! js를 만들어준다 tittle이 contetnt보다 길게썻네..ㅋㅋㅋ 어쨌든 잘 들어온다 음 근데 사실 내용=content는 엄청 길게 들어올 텐데 이제 다음에는 게시판에 글을 삽입하는 걸 해보자!

Springboot 권한! with ENUM

이제 오타 확률을 줄이기 위해서 enum을 이용해 "ROLE_USER"를 넣어주자 이렇게 enum으로 만들어주면 된다 웃긴 게 enum은 생성자가 private다 저 getValue로 값을 꺼내 쓰면된다 이제 "ROLE_USER"를 다 찾아서 바꿔주자! 회원가입/oauth로그인 테스트 잘 들어온다 https://mine-it-record.tistory.com/204 [JAVA] 자바_enum 클래스 (열거형_enumeration type) enum 이란 무엇일까? 열거체(enumeration type)로 JDK 1.5 이상에서 사용할 수 있다. 간단하게 요약을 해보자면 다음과 같다. - 클래스처럼 보이게 하는 상수 - 서로 관련있는 상수들끼리 모아 상수들을 mine-it-record.tistory.com..

Springboot 구글로그인!(3) with interface

자 구글은 /email/name/sub로 꺼내는 형식인데 페이스북/네이버/카카오도 모두 구글과 같을까? 아닐 확률이 크고 또 "google"때문에 다른 플랫폼 로그인도 모두 google로 들어가게 된다 그렇다면 System.out.println("userrequest"+userRequest.getClientRegistration()); 얘를 한번 뒤져 보자 registrationId='google', 이건 공통인 거 같다 이 값이 facebook이면 face으로 google이면 구글로 해주면 된다 새로운 인터페이스를 만들자! 이렇게 하고 igoogle/iface/inaver 이렇게 만들어 주면 된다 나중에 타플랫폼 추가시 인터페이스만 이제 늘려주면 된다 loaduserservice에 조건문을 걸어주자! ..

Springboot 구글 로그인!(1) with oauth2

일단 application.properties 로가서 이렇게 작성해준다 이건 구글 api센터에 가서 발급받으면 된다 모르겠으면 https://youtu.be/9ui2i-SgBpk 이 영상을 참고하자! 주의할 점 페이스북은 scope 없어도 기본적인 거 다 주는 거 같던데 구글은 spring.security.oauth2.client.registration.google.scope=profile,email 없으면 로그인 시 구글이 가지고 있는 우리 아이디 번호만 받아온다 훨씬 길지만 실제 사용 중인 아이디여서 잘랐다 그래서 꼭 scope설정 해주자! 그리고 html 놀랍게도 스프링 부트에서 구글/페북 같은 큰 사이트에 대한 로그인 경로는 자동으로 지정해줘서 저렇게 입력하면 된다 자 이제 구글 로그인 로그인을 ..

Springboot 비밀번호찾기!(2) 임시비밀번호 발급

이제 인증번호 입력이 맞다면 db비밀번호를 임시 비밀번호로 바꿔주고 임시 비밀번호를 발송해주는 식으로 하려고 한다! 조금 헷갈릴수있으나 그냥 메일 두번보내는것이다! 일단 비밀번호-> 임시 비밀번호로 바꿔주는 함수를 만든다 이제 restcontroller로와서 userservice.confrimRandnum(email,randnum) randnum을 검사해주고 맞다면 사실 어차피 이메일을 두 번 보내는 건데 한 개의 함수로 끝낼 수 있을 거 같은데 일단 이렇게 해봤다 utilservice.GetRandomNum(8); 8자리로 임시번호를 받고 아참 여짓것 randnum/temppwd는 String 형식이다 번호지만 string으로 주고받고 하고 있다 이게 확장성도 좋을 거 같다 나중에 특수문자 추가라던지 ..

Spring boot 비밀번호찾기!(1) 인증번호 발송

시스템은 이메일을 입력하면 db에 존재하는 이메일인지 확인하고 인증번호 요청을 누르면 인증번호가 가고 인증번호를 알맞게 제출하면 임시 비밀번호를 주고 db 비밀번호도 임시로 바뀌게 된다 html 이제 비동기 ajax로 또 이메일이 존재하는지 안 하는지 알려주면 된다 이메일 중복검사 로직을 사용하면 된다! js 반대로 존재하지 않으면 red 존재하지 않는 이메일이라고 말해준다 인증번호 발송도 이전에 만들어 놓았던 이메일 인증을 한 번 더 사용하면 된다 근데 보면 이메일을 AuthenticationPrincipal principaldetail principaldetail에서 즉 로그인했을 때만 꺼내 쓸 수 있게 사용되고 있다 그래서 저 몸통 부분을 빼서 이렇게 변수로 받을 수 있게 서비스로 하나 빼주고 물론..

Spring boot 마이페이지!(4) 비밀번호 변경 with validation

비밀번호 심플하게 변경 페이지를 만든다 controller로가서 이제 처리해주는 작업을 만들자 restcontroller로 가서 작성해준다! 이렇게 받을 건데 현재는 리턴 타입이 boolean 생각해보면 이전부터 계속 boolean으로 리턴을 해줬는데 그랬을 때 생기는 문제가 아니 true/false인건좋은데 그래서 뭐가 틀린건데..? 인증번호? 아니면 서버 문제?? 이렇게 질문이 생길 수가 있다 그래서 다음부턴 enum을 사용해서 boolean과 error메시지를 담아서 리턴해보자! 일단 boolean으로 작성! 이제 이번에는 특별히 native쿼리를 사용할 예정이다 dao로 가서 이렇게 update문을 날려주는데 좀 특이하다 select에 비해 붙는 게 많다 이유는 둘이 사용하는 쿼리 작동방식이 다른..

Spring boot 마이페이지!(3) 이메일 인증

이제 입력한 숫자로 판별을 할 건데 역시 ajax를 이용해서 하려고 한다 일단 userserivce에서 판별해주는 함수를 만든다 그래서 맞다면 db의 emailcheck를 false->true로 아니라면 false를 담고 있는 no를 리턴한다! 그다음 restcontroller를 만들어준다 자 여기서 중요한 점 인증이 성공해서 db데이터가 true로 바뀌어도 나는 현재 첫 로그인 상태 그대로를 사용 중이다 그래서 바뀐 상태의 emailcheck를 가지고 와서 다시 시큐리티 세션의 @AuthenticationPrincipal 에게 다시 꼭 넣어준다! 아니면 뭐 로그아웃을 시키고 로그인을 다시 시켜도 되긴 하는데 일단 이 방법으로 사용하겠다 그리고 마지막 ajax를 만들어주자! 아 불편하다... 위에 aja..

Spring boot 마이페이지!(2) 이메일 인증 with JavaMailSender

메일을 보내기 위해 build.gradle 로 들어가서 하나의 의존성을 추가한다 이걸 넣으면 @Autowired private JavaMailSender sender;//자체적으로 제공해주는 기능 이렇게 자체적으로 제공해주는 기능을 사용할 수 있다 의외로 메일 보내는 건 어렵지 않다 toaddress=보낼 주소 subject=제목 body=내용이다 핸드폰 인증도 비슷한 거 같다 다만 돈이 든다 그래서 마지막에 공부해보려고 한다 그리고 application.properties로 가서 이렇게 추가해준다 단 사용할 계정에서 보안 수준이 낮은 앱의 액세스 허용을 해줘야 한다! 이제 userservice로가서 인증번호 전송 발생 시 db에 들어있는 랜덤 넘버를 수정해주는 함수를 만들자 @Transactional ..

Spring boot 마이페이지!(1) with AuthenticationPrincipal

이제 마이페이지를 만들건대 간단하게 내 정보 비밀번호변경 이메일 인증 서비스를 구현해볼 것이다! 컨트롤러에서 @GetMapping("/mypage") /auth/를 빼고 작성해준다 왜냐면 로그인 시에만 들어올 수 있게 해 주기 위해서 이다 @AuthenticationPrincipal principaldetail principaldetail 로그인을 성공했다면 여기에서 로그인한 사용자 정보를 꺼내 쓸 수 있다 역시 스프링이 자체적으로 제공하는 기능이다 편리하고 보안성 있다 그리고 model에 uservo를 통으로 넘겨주고 html에서 사용해준다 놀랍게도 thymealf에서 함수까지 그대로 저렇게 사용이 가능하다 모든 게 제대로 출력된다 물론 시간제한도 만들고 해야 하지만 일단 완벽하게는 아니더라도 80프로..