시큐리티 4,3 버전에서 XML 설정 방식을 사용했다. securiry-context.xml에 아래 내용을 추가한다. max-sessions : 중복 허용할 세션 수error-if-maximum-exceede="false": 첫 번째 사용자의 세션이 끊김error-if-maximum-exceede="true": 두 번째 사용자의 세션이 끊김expired-url: 중복 로그인 발생 시 이동할 페이지 만일 유저의 인증 정보를 담는 UserDetail 객체를 Custom해서 사용하는 경우에는 반드시 equals and hashcode를 구현해줘야한다.그렇지 않으면 유저 정보를 비교할 때 서로 다른 유저로 인지해서 중복 로그인한 세션을 끊을 수 없다. Reference 세션 클러스터링과 시큐리티 없이 ..
DTO + FILE 파일과 DTO를 같이 전송하는 경우 @RequestParam을 사용해서 받을 수 있다.Content Type은 multipart/form-data를 사용하며, Form 전송 시에는 자동으로 적용되고 Ajax 사용 시에는 ContentType을 false로 주면 Ajax에서 전송할 때 알아서 multipart/form-data 방식으로 보내준다. DTO로 바로 받는 경우에는 @ModelAttribute를 사용할 수도 있고, 어노테이션을 생략하더라도 스프링에서 자동으로 바인딩 전략을 지정해준다. 다만 바인딩 전략을 명시적으로 보여주는 것도 나쁘지 않다. 아래와 같이 @RequestParam으로 파일과 객체를 따로 받을 수도 있고, 하나의 객체에 파일과 데이터를 같이 받을 수도 있다.주의할..
이미지 파일을 상대 경로로 저장했을 경우 문제점 사진 게시판을 구현하면서 게시판 조회 시 이미지를 보여주는 방법을 찾아보게 되었다.처음에는 서버의 resource 폴더에 이미지를 저장해두고 img src에 이미지 파일의 상대 경로를 넣어줬다.해당 프로젝트는 Spring Security와 JSP를 사용하고 있었고 Tool은 이클립스를 사용했다. 문제해당 환경에서 상대 경로로 이미지를 불러올 때 2가지 문제가 발생했다.첫 번째로 Spring security에서 권한이 있어야 접근할 수 있는 URI가 /admin이라고 할 때 img src="/123.jpg"를 불러오면 이미지가 나오지 않는 문제가 있었다.그 이유는 상대 경로이기 때문에 localhost:8080/123.jpg이 불러와질 것이라 생각했지만 브..
문제 상황MySQL Auto Increment를 적용한 게시글 엔티티를 추가하고, 해당 게시글의 아이디를 FK로 파일 업로드를 구현할 생각이었다.현재 환경은 MyBatis를 사용하고 있었고, 기본적으로 Mybatis는 DML 쿼리에 대해 return 값이 없었기 때문에 A.I로 생성한 PK 값을 가져오는 방법을 찾아보았다. 해결 방법Mapper.xml에서 useGeneratedKeys 속성을 사용하여 생성된 키 값을 받아올 수 있다.아래와 같이 useGeneratedKeys를 true로 주고, 값을 받아올 필드를 keyProperty 속성으로 지정해 줄 수 있다. //INSERT Query 주의 사항단, 이때 아래와 같이 리턴을 받으면 안된다.MyBatis의 INSE..