프로젝트/개인 (12) 썸네일형 리스트형 11. 스프링 시큐리티 로그인 과정 로그인 요청이 오면 1. SecurityConfig.class의 loginProcessingUrl => /auth/loginProc이 가로챔 2.가로챈 정보를 PrincipalDetailServiced의 loadUserByUsername이 username을 findByUsername로 비교해서 principal 객체를 만들고, 값을 리턴하기 전 3. 다시 SecurityConfig.class의 사용자가 입력한 패스워드를 encodePWD()로 암호화 후 , db의 값과 비교해서 정상인지 확인 후 4. 그 값을 스프링 시큐리티 영역의 user정보를 저장함. PrincipalDetailServiced의 PrincipalDetail 로 감싸져서 저장이 됨 (PrincipalDetail가 UserDetails를.. 10.비밀번호 해쉬화 후 회원가입하기 그 전에, ddl-auto를 create로 바꾸고 한번 실행시켰다가 다시 update로 바꿔줌(데이터 날리기 위해) 이제 비번 해쉬화된거아니면 안되게 할거임 해쉬의 특징 9. 스프링 시큐리티 로그인+ 커스터마이징 pom.xml org.springframework.security spring-security-taglibs org.springframework.boot spring-boot-starter-security org.springframework.security spring-security-test test 추가! 그리고 UserApiController의 전통적인 로그인 (이전 글 참고) 그리고 실행하면 스프링 시큐리티가 어떤 페이지를 들어가든 가로채서 로그인을 하게 한다 아이디는 그냥 user고 비번은 저 위에있는 해쉬넘버 => 기본적으로 스프링이 세션을 만들어서 저장해줌(principal에) 그리고 스프링 시큐리트 태그라이브러리를 사용해줌 header의 윗부분에 넣어준다 principal을 여기서 쓸수 있.. 8. 전통적인 방식의 로그인 로그인 폼부터, Username Password 로그인 get방식 로그인은 id, pw가 주소에 남으니 위험, post방식 user.js let index = { init: function(){ $("#btn-save").on("click", ()=>{ // function(){} 아니고 ()=>{}? this를 바인딩하기 위해서!! // 그냥 function 쓰면 this 는 window객체를 가리킴 this.save(); }); $("#btn-update").on("click", ()=>{ this.update(); }); }, save: function(){ //alert('user의 save함수 호출됨'); let data = { username: $("#username").val(), passw.. 7. 회원가입 세팅+ api없는 회원가입 이 전글에서 이야기 했듯 이번 프로젝트에서는 모든 데이터를 json 방식으로 넘겨 ajax로 처리할것 이유! 더보기 Ajax를 사용하는 첫번째 이유 : 일반적으로 서버로 부터 응답받을때 웹은 HTML파일을 받고 앱은 데이터(JSON)를 받는다. 이것은 서버를 이원화하여 구축한 것을 의미하며 이때 '서버를 통합하여 각각의 클라이언트에게 응답해줄순 없을까?'라는 의문점에서 고안된 방법이 Ajax통신이다. Ajax통신을 사용하면 웹은 서버로부터 데이터(JSON)를 리턴받을 수 있으며 그렇게 되면 서버의 분리 필요없이 하나의 서버로 각각의 클라이언트 요청을 받아 응답해줄수 있게된다. 대신 웹클라이언트는 추가적인 요청을 통해 HTML파일을 받아야한다. Ajax를 사용하는 두번째 이유 : 비동기 통신을 하기 위해서.. 6. 프론트 (bootstrap4)- 화면 만드는 대로 수정 https://www.w3schools.com/bootstrap4/bootstrap_navbar.asp Bootstrap 4 Navigation Bar W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more. www.w3schools.com 1. 메뉴와 푸터 package com.cos.blog.controller; import org.springframework.data.domain.Pageable; impor.. 5. 더미데이터 delete테스트+exception처리+ 무한참조방지 1.더미 데이터 delete @DeleteMapping("/dummy/user/{id}") public String delete(@PathVariable int id){ try { userRepository.deleteById(id); // } catch (Exception e){ // 좀 더 정확한 exception 확인 } catch (EmptyResultDataAccessException e){ return "삭제에 실패하였습니다. 해당 id는 db에 없습니다."; } return "삭제되었습니다. id :"+id; } 삭제에서 일어날 수 있는 오류 중 대표: 없는 데이터 넣었을 때 그래서 정확한 오류를 적으려면 EmptyResultDataAccessException 귀찮으면 그냥 EXCEPTION.. 4. JSON 사용법+ 회원가입 위한 INSERT 테스트 JSON은 한마디로, 공용어(영어) 같은 존재. 다른 컴퓨터 언어끼리도 JSON 으로 데이터 통신 쉽게 할 수 있음. 또 HTML에 있는 데이터를 자바 오브젝트로 받을때도 중간 데이터는 JSON. 우리는 리퀘스트로 오는 데이터, 중간데이터를 이제 무조건 JSON 으로 받아서 자바 오브젝트로 바꿀거임. 즉 중간 데이터의 MIME TYPE이 전부 JSON인거. 리스폰스할때도 자바오브젝트를 JSON 으로 변환해서 응답해줌. 1.연관관계 만들기 @ManyToOne @OneToMany @OneToOne @ManyToMany ManyToMany는 사용하지 않는다. 그 이유는 서로의 primary key로만 중간 테이블을 생성해주는데, 날짜나 시간 다른 필드들이 필요할 수 있기 때문에, 내가 중간 테이블을 직접만들고.. 이전 1 2 다음