IT수업/STS3 34

IT 수업 21주차 (145) Remember Me

로그인 상태 유지를 구현해본다. SecurityConfig에서 rememberMe()를 작성해준다.  login화면에 remember-me를 위한 체크박스를 만들고 실행하여 세션값을 확인해본다. 개발자 도구의 Application를 열고 체크박스에 체크를 한 뒤 로그인 해본다.  remember_me를 체크하고 로그인을 하면 세션에 해당 값이 들어가는 것을 확인 할 수 있다. 이후 해당 프로그램을 끄고 다시 실행시켜 메인 페이지에서 주소창에 /user를 치면 로그인화면이 뜨는 것이 아니라 /user페이지가 뜨게 된다.   Security Config에서 DB와 연결하기 위해 dataSource3를 연결하고 토큰 레파지토리 빈을 만들어 remember_me의 값을 DB에 저장한다.   ctrl 키를 누르면..

IT수업/STS3 2024.05.14

IT 수업 21주차 (144) Security 5 ( Handler )

- 로그인 실패시 핸들러인증 실패시 처리하기 위해 Security Config에서 로그인 부분에 failureHandler를 작성한다.  그리고 빨간 줄에 커서를 올려 create class를 해준다. 이때 위치는 auth 안의 loginHandler로 해준다. sysout으로 확인해본다.  추가로 sendRedirect를 해주고  UserController로 가서 login매핑에 exception을 넣어준다. 출력하면 exception을 확인 할 수 있다.     - 로그아웃 핸들러 auth에 logoutHandler를 만들어주고 그 안에 클래스를 create 해준다. 동작이 되는지 sysout으로 확인해본다.   동작을 확인했으면 세션을 초기화하는 작업을 해준다.    - 로그아웃 성공시 핸들러 똑같..

IT수업/STS3 2024.05.14

IT 수업 21주차 (143) Security 4_ view로 표현하기

방법 1. controller에 authentication을 연결SecurityTestController에서 user값을 콘솔 창에 나타나도록 작성한다.log.info 로 개별 값을 출력시켜본다. 그리고 user로 login하면 콘솔창에 해당 값들이 출력된다.     이번에는 뷰로 표현하기 위해 user.jsp 로 가서 user 뷰페이지에 나타낼 값들을 적어본다. 그리고 출력시키면 해당 값들이 나온다.   방법 2. getContext()함수 이용해 Authentication 꺼내오기똑같이 SecurityTestController에서 작성한다. 그리고 member.jsp로 가서 뷰로 표현하기 위해 authentication을 받아온다. 프로젝트를 실행시켜 member로 로그인하면 해당 값들이 뷰로 출력된..

IT수업/STS3 2024.05.13

IT 수업 21주차 (142) Security 3_DB연결

src/main/java의 config에 auth패키지를 만들고 PrincipalDetail 클래스를 만든다. PrincipalDetails에 userDto를 적용시킨다. 빨간줄에 커서를 올려 add unimplements method를 눌러준다.그리고 return을 수정해준다.    다음은 auth에 PrincipalDetailsService 클래스를 만들어 준다.  implements UserDetailsService를 적고 생긴 빨간줄도 위와 같이 Unimplements 를 추가해준다.  @Autowired로 UserMapper를 추가해준다.  그리고 UserMapper로 가서 select를 위한 코드를 작성해준다.  그리고 다시 PrincipalDetails로 돌아와서 위에 적은 것들을 적용시켜준..

IT수업/STS3 2024.05.13

IT 수업 21주차 (141) Security 2

앞에서 login 페이지를 만들지 않았지만 자동으로 만들어졌다고 했었다. 개발자도구를 열어 form을 열면post방식이고 csrf 를 통한 보안이 사용한 것을 확인 할 수 있다.    나중에 커스텀한 페이지를 만들기 위해 csrf 보안을 꺼준다.   그럼 개발자도구를 열었을 때 csrf가 사라진 것을 확인 할 수 있다.   SecurityConfig에서 로그인, 로그아웃 페이지를 연결시켜준다. 그리고 UserController에서 login페이지와 getMapping해준다.  view에 login페이지를 만들어서 원하는 폼을 작성해준다. 그리고 실행하면 login페이지가 나오게 된다. user, member, admin 중 아무거나 로그인 하고 해당 페이지에서 주소창에 /logout을 치면 로그아웃이 되..

IT수업/STS3 2024.05.13

IT 수업 21주차 (140) Security

● Security스프링 시큐리티는 스프링 기반의 애플리케이션 보안(인증, 인가, 권한)을 담당하는 스프링 하위 프레임워크.보안 관련 옵션을 제공해주며 복잡한 로직없이 어노테이션으로 설정할 수 있고 여러 보안 위협을 방어해주며 요청 헤더도 보안처리를 해준다. 그리고 기본적으로 스프링 시큐리티는 세션 기반 인증을 제공한다. 스프링 시큐리티는 필터 기반으로 동작하여 각 필터에서 인증, 인가와 관련된 작업을 처리한다.  ● 시큐리티 필터    ● 시큐리티 인증 처리 과정  1. 사용자가 폼에 아이디, 패스워드를 입력하면 HTTPServletRequest에 아이디, 비밀번호가 전달된다. 이때 AuthenticationFilter가 넘어온 아이디와 비밀번호의 유효성 검사를 실시한다.2. 유효성 검사 후 실제 구현..

IT수업/STS3 2024.05.13

IT 수업 21주차 (139) Scheduled

● @Scheduled 일정한 시간 간격으로, 혹은 특정 시간에 코드가 실행되도록 설정할 수 있다.bath는 여러 작업이 순차적으로 처리되는데 scheduled는 특정 작업을 특정 시간에 단순하게 처리한다.  ● @Scheduled 속성fixedRate : 작업 수행시간과 상관없이 일정 주기마다 메소드를 호출fixedDelay : (작업 수행 시간을 포함하여) 작업을 마친 후부터 주기 타이머가 돌아 메소드를 호출 initialDelay : 스케줄러에서 메소드가 등록되자마자 수행하는 것이 아닌 초기 지연시간을 설정 cron : Cron 표현식을 사용하여 작업을 예약   12 프로젝트를 복사해서 13_Sceduled 프로젝트를 만들어준다. src/main/java에 Scheduled라는 패키지를 새로 만들고..

IT수업/STS3 2024.05.13

IT 수업 20주차 (138) Handler Mapping

● HandlerMapping HandlerMapping은 원하는 handler를 찾아오는 역할을 수행한다. 즉, request의 URL과 매칭되는 handler를 선택하는 역할을 수행한다.( HTTP 요청 정보를 이용해서 컨트롤러를 찾아주는 기능을 수행 )   ● BeanNameUrlHandlerMapping11프로젝트를 복사하여 12_HandlerMapping 프로젝트를 만들어 준다. WebMvcConfig에서 빈을 먼저 만들어 준다.  src/main/java에 handler 패키지를 만들고 그 안에 CustomHandler 클래스를 만들어 준다.    마우스 우클릭으로 source -> override/implement 들어가 handlerRequest를 체크해 추가해준다.  그리고 안에 syso..

IT수업/STS3 2024.05.10

IT 수업 20주차 (137) Listener

10번 프로젝트를 복사하여 11_Listener 프로젝트를 만들어 주고 그 안에 RequestHandlerEventListener 클래스를 만들어 준다. 이번에는 사용자로 부터 요청이 들어 왔을 때 요청 이벤트를 감지하는 리스너를 만들어 볼 것이다.  src/main/java에 listener 패키지를 만들어준다.   스프링 이벤트에서는 안에 있는 것만 바꿔주면 다른걸로 사용 가능하다. sysout을 찍어본다.   WebMvcConfig에 등록시켜주기 위해 WebMvcConfig로 이동한다.그리고 Listener Bean을 등록해준다.  그럼 request가 있을 때마다 감지를 하게 된다.  새로고침 할때마다 리스너가 실행되도록 하기위해RequestHandlerEventListener를 복사하여 Cus..

IT수업/STS3 2024.05.10

IT 수업 20주차 (136) Filter and Interceptor

09 프로젝트를 복사하여 10_Filter_Interceptor 프로젝트를 만들어준다. src/main/java에 filter 패키지를 만들고 TestFilter 클래스를 만들어 준다.   Filter는 javax servlet으로 import 해준다.TestFilter에 빨간줄 뜰때 마우스를 올리면 add 뜨는데 그거 누르면 자동으로 코드가 생긴다.  한번 실행시켜본다.   주소창에 /memo/add를 치고 안에 값을 넣고 제출버튼을 누르면 콘솔창에 이전에 만든 aop가 출력된다.     ● 인터셉터개발자가 특정 Controller의 핸들러가 실행되기 전이나 후에 추가적인 작업을 원할 때 Interceptor를 사용한다. 스프링 인터셉터를 사용함으로써 코드의 중복을 줄이고 관심사를 분리하여 개발자는 핵..

IT수업/STS3 2024.05.10