Languages | Frameworks/Spring

    @Autowired, @Component, @Service, @Repository 등 스프링 어노테이션에 관해..

    Spring 공부를 하다보면, 해당 어노테이션들을 마주할 수 있을것이다. @Autowired는 컨테이너에 등록된 Bean을 주입받아 사용하는 어노테이션(의존성 주입 방식에는 3가지 방식이 있는데, 생성자 주입 방식을 권고함) **생성자 주입 방식 예시** @Component public class WebProject { private Developer developer; @Autowired public WebProject(Developer developer) { this.developer = developer; } } @Component는 DI(의존성 주입)을 통해 해당 클래스를 Bean으로 등록해주는 어노테이션 (@Service, @Controller, @Repository 등등)

    [Springboot] Spring-security 적용기(1) - 일반로그인

    Springboot Maven 환경에서 간단하게 적용하는법을 노트하였습니다. 1. pom.xml 에서 아래 코드를 추가해준다(필자는 security, jpa, mysql, lombok, Mustache 라이브러리를 사용함) org.springframework.boot spring-boot-starter-security org.springframework.boot spring-boot-starter-data-jpa com.mysql mysql-connector-j runtime org.projectlombok lombok true org.springframework.security spring-security-test test org.springframework.boot spring-boot-starter..

    [Spring] 세션 타임아웃

    session은 생성할때마다 메모리를 사용하는데, session.invalidate()를 호출해서 삭제하지 않으면 계속 메모리가 쌓이게 되어 나중엔 메모리 초과를 유래한다.(보통 로그아웃 누르지 않고 브라우저 종료할때) 세션은 기본적으로 메모리에 생성되는데, 메모리의 크기가 무한하지 않기 때문에 꼭 필요한 경우만 생성해서 사용해야 한다. (10만명의 사용자가 로그인하면 10만개의 세션이 생성되는 것임) 그러기 위해선 종료 시점을 정해야 하는데, 어떻게 정하면 좋을까? 가장 단순하게 생각해보면, 세션 생성 시점으로부터 30분 정도로 잡으면 될 것 같다. 그런데 문제는 30분이 지나면 세션이 삭제되기 때문에, 가령 게임을 하다가 30분이 지나면 게임이 꺼지게 될 것이다. 그래서 더 나은 대안은 세션 생성 시..

    [Spring] jsessionid를 url에 노출안시키기(쿠키를 통해서만 세션 유지)

    application.properties에 server.servlet.session.tracking-modes=cookie 추가!

    Cookie를 사용한 로그인/로그아웃(세션쿠키) + 보안

    세션쿠키를 사용하면 브라우저가 종료되기 전까지 웹브라우저에 쿠키정보가 남아있어서 한번 로그인 한 후에는 로그아웃 후에 추가적인 정보입력없이 바로 로그인 할 수 있다. @GetMapping("/login") public String loginForm(@ModelAttribute("loginForm") LoginForm form) { return "login/loginForm"; } @PostMapping("/login") public String login(@Valid @ModelAttribute LoginForm form, BindingResult bindingResult, HttpServletResponse response) { if (bindingResult.hasErrors()) { return "..