spring 39

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프로..

Spring boot 로그인하기! with Security

controller에 로그인 페이지를 걸어준다 loginpage를 구현해주고 구글로그인 페이스북로그인 이거는 스프링에서 oauth2에서 미리 지정해서 논 경로라고 한다 그리고 여기서 주의할 점 name="username" name="password" 스프링한테 줄 때 이렇게 해줘야 한다 물론 바꿀 수도 있는데 그냥 안 바꾸고 진행하는 게 편하다! 왜 이렇게 받는지는 시큐리티 로그인을 만들면서 봐보자! 일단 로그인 성공 시 담을 principaldetail을 만든다 spring으로 자체적으로 제공해주는 userdetails를 임플리먼트 받는다! 로그인에 성공 했다면 시큐리티 전용 세선에 authentication으로 감싸 져서(?) 들어가게 된다 사용 시에는 security session=>authenti..

Spring boot 회원가입 만들기!(3) 해시하기 with BCryptPasswordEncoder

이제 비밀번호 및 이름을 받아서 넣을 건데 dto와 바닐라 js를 이용해서 유효성 검사를 할 것이다! 원래 프런트엔드에서도 보안 작업을 걸어야 하지만 사실상 검사를 눌러서 수정해 버리면 의미가 없어지기 때문에 백엔드에서 잘못된 값이 들어왔을 때 튕겨내주는 장치를 하려고 한다! (뇌피셜 일뿐 프런트엔드 전문가 분들이 만들다면 당연히 좀 더 다를 거라고 생각한다 보안은 그냥 정말 특수한 공부 영역 같다) 일단 역시 바닐라 js로 비밀번호 역시 css를 만져준다! 이제 회원가입을 진행할 텐데 form->controller->userservice->비밀번호 해시-> dao->service->controller 이렇게 될 거 같다 이제 시큐리티로 가서 인코더를 만들자! BCryptPasswordEncoder 를 ..

Spring boot 회원가입 만들기!(2) 아이디중복검사 with ajax

이제 아이디 중복검사를 할 건데 바닐라 js 비동기 통신을 할 것이다 원래는 j쿼리를 사용했지만 바닐라 js로 사용하는 습관을 들일 예정이다 순서는 이렇게 된다 ajax요청->requestcontroller요청->userdao탐색->userservice반환->requset반환->ajax가 받음 userdao에 jpa 식으로 써준다 크정말 신기하다 저렇게 대소문자를 구별해서 써주면 혼자서 db에 select *from 테이블 이름 where email=?! 이렇게 쏴준다! 이제 userservice를 만들어준다 비웠다면 true가 들어있는 yes를 줄 거고 아니라면 false가 있는 no를 줄 것이다! (추후 existsByEmail로 변경했다) requsercontroller를 지정해준다 import 맞..

Spring boot 회원가입 만들기!(1) with security And mvcModel And jpa

일단 시큐리티설정을 해주고 모든 페이지에 대한 조건을 허용으로 해준다! .antMatchers("/","/auth/**","/static/**")////이 링크들은 .permitAll();///허용한다 모든 요청을 허용한다 를 해주고 이제 vo/dao/dto를 만들 것이다 dto는 왔다 갔다 컨테이너 용도이고 vo는 데이터베이스에 넣는 용도로 쓸 것이다! 컨트롤러에서 회원가입 페이지로 갈 수 있게 만들어준다! vo/dto/dao를 만들어준다! 1.vo 2.dto import javax.validation을 사용해 조건에 맞지 않는 형식이 들어오면 메시지를 출력해준다! userdto라고 되어있는데 나중에 singupdto/logindto 용도에 따라 나눠볼까 생각도 든다 3.dao 스프링 시작 시 의존성 ..