Spring Security login의 마지막 파트이다. loginForm 에서 /auth/loginProc 의 해당 주소로 이동하게 설정해놨다. 여기서 재밌는점은 UserApiController 에는 /auth/loginProc의 주소를 받는 컨트롤러는 존재하지 않고 /auth/joinProc의 주소만 존재한다. 이유는 뭘까? 그 이유는 바로 Security가 로그인 요청을 가로채게 만들 것이기 때문이다. 해당 설정을 위해 SecurityConfig에서 작업을 실시한다. .loginProcessingUrl() 이 로그인 요청을 가로채고 해당주소로 오는 로그인을 대신해주고 정상적으로 요청이 완료되면 .defaultSuccessUrl()의 해당 주소로 이동하게 된다. 여기서 중요한점은 우리는 loginF..
로그인을 하기에 앞서, 현재 우리의 홈페이지에서 회원가입을 진행하면 폼에 입력된 정보가 암호화 되어 데이터베이스에 저장되는 것 아니라 입력값 그대로 저장된다. 우리는 입력값 그대로를 데이터베이스에 저장하는 것이 아니라 해쉬(Hash)형태로 변환 후 DB에 저장할려고 한다. 시큐리티는 어떤 로직을 가지고 있는지 살펴보면 로그인을 요청한다. 시큐리티가 지켜보고 있다가 파라미터로 전달된 username, password를 가로챈다. 가로챈 파라미터로 로그인 진행이 완료된다. 시큐리티가 가지고 있는 전용 세션에 유저정보를 저장한다. 우리는 세션에 저장되어 있는 유저정보를(IOC)를 DI(의존성주입)을 사용하여 필요할 때 마다 사용한다. 여기서 중요한 점은 시큐리티 세션에는 우리가 만들어놓은 User 오브젝트를 ..
우리는 앞으로 Spring Security에서 인증이 안된 사용자들이 "/auth" 경로를 통해 접근할 수 있도록 설정할 것이다. 예를들어서 JoinForm(회원가입), loginForm(로그인페이지) 들은 인증이 필요하지 않은 곳이기 때문에 "/auth" 경로로 설정하는 것이다. 필요한 모든 곳의 주소를 변경했다면 config라는 패키지를 하나 만들고 패키지속에 SecurityConfig 라는 Class를 생성해준다. SecurityConfig 클래스 속에서 WebSecurityConfigurerAdapter 클래스를 상속(extends)후 HttpSecurity를 가지고 있는 configure() 메소드를 오버라이딩 해준다. 설정파일을 bean으로 등록하기 위해서는(스프링 컨테이너에서 객체를 관리할 ..
시큐리티 로그인을 하기 위해서는 Pom.xml 수정이 필요하다. #1 pom.xml 수정 (dependency 추가) org.springframework.security spring-security-taglibs org.springframework.boot spring-boot-starter-security dependency를 추가하고 서버를 돌리면 메인 페이지로 가려고 하는데, url에 자동으로 /login으로 매핑되어 이상한 로그인 페이지로 이동한다. 이유는 바로, Spring security가 가로채서 이 화면으로 자동으로 가게 만들어놨기 때문(username은 user Password는 콘솔창에 띄워지는 해쉬 Password를 사용하면 원하는 메인페이지로 이동이 가능하다) 이를 통해서 알 수 있..
아주 전통적인 방법의 로그인 구현을 해보려고 한다.(시큐리티 로그인 전 파트) #1 사용자들이 회원가입한 데이터를 바탕으로 로그인을 한다 => 로그인(버튼)을 클릭하면 ID로 연결되어 작동하는 AJAX실행. 사용자들이 ID와 PASSWORD를 입력 후, 로그인 버튼을 누르면 AJAX가 실행되도록 설정해야 합니다. 로그인 폼에서 로그인버튼의 ID를 btn-login이라고 설정해뒀으니 이것을 활용해서 JS파일에서 AJAX가 실행되게 코드를 짜봅시다. let index = { init: function(){ // 회원가입 버튼 $("#btn-save").on("click",()=>{ this.save(); }); $("#btn-login").on("click",()=>{ this.login(); }); }, ..
Spring Boot에는 src/main/resources 파일 내부에 Static 폴더가 존재하고 이 폴더는 보통 Content를 두곤합니다. 보통 CSS/JS 파일을 위치하게 하고 /static을 통해서 웹에서 바로 접근이 가능합니다. 회원가입 버튼을 눌렀을 때 AJAX로 username, password, email의 value 값들이 이동하게 만들고 회원가입이 성공적으로 이뤄질 수 있게 /static 폴더 내부에 간단한 JS파일 작업을 시작합니다. #1 /static/js/user.js 회원가입 버튼(#btn-save)가 눌리면 작동하는 save function()을 만들고 username, password, email의 데이터를 Post 방식으로 전송한다. let index{ init: func..
우리 블로그의 홈화면과 로그인, 회원가입 페이지를 만들어보도록 하겠습니다. # 1 기본적으로 http://localhost:8080/blog 로 접속했을 때 우리의 home 화면을 보여줘야 하므로, 컨트롤러를 하나 생성하도록 하겠다. BoradController.java 클래스를 생성하고 return 값으로 "index"를 주면 yml의 설정때문에 /WEB-INF/views/index.jsp를 서칭하게 되므로 views 밑에 index.jsp를 만들어둔 후 index.jsp에 기본적인 세팅을 해주면 된다. 부트스트랩을 활용하여 적당한 템플릿을 가져와 줍니다. (footer와 header 파일은 따로 생성했습니다) BoardController.java @Controller public class Board..
앞선 포스팅에서 더미 데이터를 Select 해오고, Insert 해보는 작업을 해봤다. 오늘은 Update 작업을 해볼 건데 앞선 Select와 Insert의 구현 방식을 이해했다면 손쉽게 이해할 수 있을 것이다. # 1 첫 번째로 생각해야할 것은 바로 DB의 Update를 위해서는 PostMaping을 한다는 것! 그리고는 어떤 컬럼을 기준으로 Update문을 작성하고, 구현해야하는지. . . . 우리는 ID값을 기준으로 DB를 Update 할 것이다. 이제는 뭐 자동적으로 코드가 술술 나온다 ~ Update를 위한 PostMapping 주소를 입력하고, 매개변수로 @PathVariable을 사용해 id 값을 매칭시키고, @RequestBody 어노테이션을 사용해서 requestUser 라는 이름의 U..