일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 김영한
- SpringBoot
- 스프링 핵심 원리
- java
- Servlet
- springdatajpa
- spring
- 그리디
- JDBC
- pointcut
- 인프런
- JPQL
- QueryDSL
- Spring Boot
- 자바
- Exception
- 스프링
- 백준
- 스프링 핵심 기능
- AOP
- jpa
- kotlin
- Greedy
- Android
- Thymeleaf
- transaction
- db
- Proxy
- 알고리즘
- http
- Today
- Total
목록login (10)
개발자되기 프로젝트
Android에서 비밀번호 기반 계정으로 Firebase에 인증 | Firebase Documentation Join Firebase at Google I/O 2022 live from Shoreline Amphitheatre and online May 11-12. Register now 의견 보내기 Android에서 비밀번호 기반 계정으로 Firebase에 인증 Firebase 인증을 사용하여 사용자가 이메일 주소와 비밀 firebase.google.com 1. 예제 코드 package com.example.fb_email_pw_auth import android.content.ContentValues.TAG import androidx.appcompat.app.AppCompatActivity impo..
1. 현상 현재 로그아웃을 시도하면 화면이 바뀌지 않는다. 아래와 같이 로그아웃을 클릭하면 logcalhost:8080/logout 으로 접속하고 session이 있는 경우 session을 만료시킨다. 이후 localhost:8080/으로 redirect된다. 이때 localhost:8080/ 접속 시 세션에 로그인 회원에 대한 정보가 없으면 home.html 정보가 있으면 loginHome.html을 뿌려준다. 하지만 로그아웃을 시도해도 뷰가 변경되지 않는다.. 2. 원인 분석 localhost:8080/ 접속 시 처리하는 로직 중 세션 유뷰 확인 이후에 현재 세션에 담긴 정보를 찍어보자. 만약 로그아웃 시도 후 위에 작성한 로그가 남는다면, 세션 만료 처리가 되지 않아 발생하는 문제이다. 2021-1..
로그인 시 검증 처리를 위해 의존성 추가. implementation 'org.springframework.boot:spring-boot-starter-validation' 로그인을 벌써 구현하는 이유? 세션에서 로그인 회원 정보를 가져와서, 글 작성시 작성자로 활용하기 위함 1. 로그인 방식 쿠키 세션 2. loginForm 로그인 시 입력할 정보이다. @Getter @AllArgsConstructor public class LoginForm { private String loginId; private String password; } 3. loginService 로그인 처리 로직은 간단하다 비밀번호가 DB에 입력된 값과 동일하면 Member정보를 반환한다. 이 때 DTO로 변환하여 return. @S..
RequestMapping Handler Adapter 구조 HTTP 메시지 컨버터는 SpringMVC 어디 쯤? 에서 사용됨....? 1. SpringMVC 구조 @RequestMapping을 처리하는 핸들러 Adapter인 RequestMappingHandlerAdapter에서 처리함. 2. RequestMappingHandlerAdapter 동작.. bsh-developer.tistory.com 1. @Login annotation을 직접 만들자? 기존에는 @SessionAttribute()를 Member에 붙여서 Member와 관련있는 Session을 편하게 사용하였다. @SessionAttribute()는 request에서 session을 꺼내주고 쿠키까지 찾아준다. 충분히 편리하다. // @G..
스프링 인터셉터는 서블릿 필터와 같이 웹과 관련된 공통 관심 사항을 효과적으로 해결할 수 있는 기술 해당 기능을 Servlet이 제공하면 ServletFilter, Spring MVC가 제공하는 것은 Spring Iterceptor 웹과 관련된 공통 관심 사항을 처리하지만, 적용되는 순서와 범위, 그리고 사용방법이 다름. 1. Spring Interceptor 흐름 HTTP 요청 -> WAS -> Filter -> DispatcherServlet -> Spring Interceptor -> Controller Spring Interceptor는 Dispatchet Servlet과 컨트롤러 사이에서 컨트롤러 호출 직전에 호출 된다. Spring Interceptor는 Spring MVC가 제공하는 기능이기..
기존에 사용된 쿠키 방식을 session으로 변경해보자. 1. LoginController loginV2() @PostMapping("/login") public String loginV2(@Validated @ModelAttribute("loginForm") LoginForm form, BindingResult bindingResult, HttpServletResponse response){ if(bindingResult.hasErrors()){ return "login/loginForm"; } Member loginMember = loginService.login(form.getLoginId(), form.getPassword()); if(loginMember == null){ bindingResul..
1. 세션 관리가 제공하는 기능 세션 생성 sessionId 생성 (임의의 추정 불가능한 랜덤 값) 세션 저장소에 sessionId와 보관할 값 저장 sessionId로 응답 쿠키를 생성해서 클라이언트에 전달 세션 조회 클라이언트가 요청한 sessionId 쿠키의 값으로, 세션 저장소에 보관한 값 조회 세션 만료 클라이언트가 요청한 sessionId 쿠키의 값으로, 세션 저장소에 보관한 sessionId와 값 제거 2. SessionManager 생성 cookie 이름은 항상 "mySessionId"임 -> 상수로 만듦 : "SESSION_COOKIE_NAME" session은 메모리에 저장하고, 동시성 문제로 인해 ConcurrentHashMap 사용 package hello.login.web.sess..
1. 쿠키 방식의 문제점 쿠키애 정보를 보관하는 방법은 보안문제가 있다. 보안문제 해결을 위해서는 중요한 정보는 서버에 저장해야함. 클라이언트와 서버는 추정 불가능한 임의의 식별자 값으로 연결해야함. 이렇게 서버에 중요한 정보를 보관하고 연결을 유지하는 방법을 세션이라 함 2. 세션 동작 방식 로그인 사용자가 loginId , password 정보를 전달하면 서버에서 해당 사용자가 맞는지 확인 세션 생성 사용자 정보가 맞으면, 세션 ID를 생성 이 때 세션 ID는 추정 불가능해야 함. UUID는 추정이 불가능하다. -->로또 연속 6번보다 낮은 확률로 맞출 수 있음 ㅋㅋㅋ Cookie: mySessionId=zz0101xx-bab9-4b92-9b32-dadb280f4b61 생성된 세션 ID와 세션에 보관..