본문 바로가기

전체 글101

[Spring Security] 5. Mybatis를 이용하여 DB연동하기 지금까지 우리는 xml에 계정과 비밀번호를 직접 등록하여 사용했다. 하지만 우리가 상상하는 로그인은 이런게 아니라 DB속에 계정정보를 저장하여 유동적으로 사용하는 것을 꿈꾸었을 것이다. 이 포스팅에서는 드디어 스프링시큐리티와 DB를 연동하여 쿼리문을 통하여 계정정보를 조회하는 방법을 알아보도록 하겠다. Mybatis를 이용한 DB연동 여기서는 마이바티스를 이용한 DB연동은 기본적으로 할줄 안다고 가정을 하고 대하여 자세히 다루지 않겠다. 디비를 연동하게되면 dataSource라는 이름으로 빈객체를 생성하는데 이 bean객체를 이용하여 Spring Security와 연동을 하게 된다. 제 제목 내용작성 제목 내용작성 제목 내용작성 2020. 2. 8.
[Spring Security] 4. 로그아웃(logout) 구현하기 로그인이 있으면 당연히 로그아웃이 있는게 당연하다. 스프링시큐리티를 사용하지 않고 로그인 기능을 구현하게 되면 별도로 로그아웃 url을 통해 세션관리를 해주었는데 이러한 과정을 스프링시큐리티에서는 어떤식으로 구현하고 또 어떤 기능들이 있는지 살펴보는 내용을 알아보도록 하겠다. xml 설정 자세한 설명은 생략한다... logout-url : 로그아웃 URL logout-success-url : 로그아웃 성공시, 이동할 URL. (default: /login?logout) invalidate-session : 로그아웃 시, session을 무효화할 지 선택. (default: true) delete-cookies : 로그아웃 성공시, 삭제할 쿠키 이름 지정 success-handler-ref : 로그아웃 성.. 2020. 2. 7.
[Spring Security] 3. 내가만든 커스텀 로그인화면 사용하기 이제 슬슬 스프링시큐리티에 대하여 자신감이 붙기 시작했으리라 생각한다. 자신감이 생기면 내 마음대로 고쳐보고싶은게 생기기 마련인데 이 포스팅에서는 가장만만한 로그인화면부터 수정하는 방법에 대하여 알아보고자 한다. 로그인화면 만들기 Please sign in Username Password Sign in 기본으로 제공되어지는 스프링 시큐리티 로그인화면이다. 자세히 살펴보면 전송은 POST방식으로 URL은 /login으로 되어 있다. 그 외에 _csrf라고 적혀있는 토큰이 있는데 토큰에 대해서는 나중에 따로 이야기를 하도록 하고 지금은 그냥 넘어간다. 로그인 기존 스프링시큐리티의 로그인 화면을 이용하여 직접 만든 로그인페이지 이다. input태그의 name 값을 변경해도 되냐고 물어본다면 Okay다. 하지만.. 2020. 2. 7.
[Spring Security] 2. 권한설정 1편에서 Spring Security의 기본적인 설정 방법에 대하여 알아보았지만 말 그대로 기본적인 설정일뿐 현실적으로 사용하기에는 무리가 있다. 사실상 스프링시큐리티는 커스터마이징을 하지 않는다면 아무 의미가 없기 때문에 기본설정 이후에 각 기능에 대하여 적절한 튜닝절차를 거쳐야 하는데 스프링시큐리티 2번째 포스팅에서는 권한설정에 대하여 좀 더 자사하게 알아 볼려고 한다. 권한설정 기본설정 편에서는 url에 따른 접근권한을 한개만 설정했지만 이번에는 3가지로 나누어서 설정을 했다. 특이한점은 use-expressions 옵션의 값이 기본설정편에서 false였는데 true로 변경됬다는 점인데 이 값이 true가 된다면 SpEL문법을 사용한다는 의미이다. 예를 들어hasAnyRole이라던가 permitAl.. 2020. 2. 7.
[Spring Security] 1. 기본설정 하기 Spring Security를 주제를 여러회차로 나누어서 시리즈 형태로 포스팅을 시작할려고 합니다. 사실 기존의 AOP를 이용한 인증방식을 너무나도 잘 사용하고 있어서 굳이 스프링시큐리티를 따로 사용해야 하나 라는 생각이 있었는데 스프링시큐리티를 파보면서 느낀점은 첫번로 스프링시큐리티가 너무 좋다는 점이였고, 두번째로는 생각보다 많이 어렵구나(복잡하구나)라는 생각이였습니다. 그래서 결국 앞으로 스프링시큐리티를 애용해야 겠다는 생각과 함께 한개의 포스팅으로 정리할려고 했던 스프링시큐리티를 시리즈 형태로 나누어서 정리를 하기로 했습니다. 부디 이 포스팅이 스프링시큐리티를 공부하는 분들에게 많은 도움이 되었으면 하는 바램입니다. 추가적으로 이 포스팅의 방향을 설명하자면 최종적으로는 스프링시큐리티를 커스터마이징.. 2020. 2. 7.
[정규식] JavaScript에서 사용하는 정규 표현식 정규식은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식언어 입니다. 좀 더 쉽게 설명하면 어떤 문자열이 있는데 이 문자열이 숫자로만 이루어져 있는지 혹은 전화번호처럼 000-0000-0000 형식으로 이루어 졌는지 등과 같이 문자열의 형태를 정의하는 표현식이라고 이해할 수 있습니다. 이런 정규식은 단순히 입력한 값의 유효성 체크뿐만 아니라 업무처리를 함에 있어서 많은 단순작업들을 자동화해주는 이점이 있는데 이 포스팅에서는 응용하는 방법보다는 기본적인 사용법에 대해서 집중적으로 알아볼 예정이며 사용환경은 JavaScript 입니다. 제목 내용작성 제목 내용작성 제목 내용작성 제목 내용작성 제목 내용작성 2020. 2. 7.
[Java] 폴더, 하위폴더에 있는 전체 파일이름 추출(가져)오기 평화로운 어느날, 꿀을 빨고 있던 나에게 특명이 떨어졌다.. 서버에 실제로 존재하는 첨부파일과 DB상에 있는 첨부파일을 비교하여 누락된 첨부파일이 없는지 확인 하라는 것이였다.. 아직 애송이 개발자인 나에게 파일처리는 멀게만 느껴지는건 어쩔수가 없나보다. 그러한 이유로 지시를 받는 순간 숨이 막히기 시작했다.. 잠시 고민하다가 어쨌든 텍스트형태로 된 파일이름의 값이 있어야지만 이를 이용하여 DB에 넣어 조인을 해서 비교를 하거나, 엑셀을 이용해 어떻게든 비교할 수 있을 태니 우선 서버상에 있는 첨부파일들의 이름을 텍스트형태로 가져와야 겠다는 생각이 들었는데 문제는 파일이름을 어떻게 가져오냐 였다. cmd창에서 파일이름을 가져오는 방법을 알고는 있었지만 첨부파일마다 파일경로가 다르고(하위폴더에 위치) 무엇.. 2020. 1. 29.
[Linux] tail명령어를 이용하여 실시간으로 로그보기 출처는 정확하지 않지만 인터넷상에서 서버의 90%이상이 리눅스로 되어 있다는 자료를 본 기억이 있습니다. 사실여부는 잘 모르겠지만 리눅스가 전체 서버시장에서 차지하는 비중에 대하여 모르는 개발자는 없으리라 생각합니다. 그러다보니 서버상에서 로그를 보려면 리눅스에서 확인해야 하는 경우가 대부분인데 윈도우의 메모장에 익숙한 사람들에게 리눅스는 생소하다보니 로그를 확인하는데 에러사항이 있습니다. 그래서 오늘은 리눅스에서 tail명령어를 이용하여 실시간으로 로그를 어떻게 확인하는지 포스팅 해보도록 하겠습니다. tail 명령어의 구조 [tail의 기능] 파일의 마지막 부분을 출력 [문법] tail [option] [file] [옵션의 종류] f : 파일의 마지막 10라인을 실시간으로 갱신하여 출력 n : 파일의 .. 2020. 1. 26.
[Linux] vi(vim)에디터 사용방법 리눅스를 이용한 개발 혹은 리눅스서버를 운영하는 개발자라면 반드시 알아야 하는 것중에 한가지가 바로 텍스트 에디터를 사용하는 방법입니다. 윈도우의 경우 메모장이나 혹은 Edit Plus와 같은 툴을 이용하여 텍스트 파일을 보지만 리눅스에서는 vim에디터를 이용하여 텍스트 파일을 확인하거나 수정합니다. 물론 vim에디터 외에도 리눅스에는 여러가지 텍스트편집기가 있지만 가장 많이 사용하는 vim에디터만 다루어보도록 하겠습니다. 참고로 vim에디터는 vi에디터에서 발전된 형태의 에디터로 리눅스에서는 vi에디터로 실행한다 하더라도 vim으로 실행됩니다. vim 에디터 실행 커맨드 라인에 vi 혹은 vim 이라는 키워드를 입력하면 vim에디터가 실행됩니다. 기존의 텍스트 파일을 vim에디터로 실행 실행하고자 하는.. 2020. 1. 26.
[Spring] Web.xml 설정(세팅)하기 스프링에서 사용되는 web.xml파일은 Deployement Descriptor(배포 서술자)라고 불리어 집니다. 결국 어떤 프로젝트를 배포하게 되면 그 프로젝트에 대한 설정에 대한정보를 가지고 있는 파일이라고 이해하면 되는데 기본적인 설정정보를 가지고 있다보니 모든 Spring프로젝트는 실행되기전에 1차적으로 web.xml을 거쳐가게 됩니다. 그래야 어떠한 설정이 있는지 확인하고 그 설정에 맞게 동작하니깐요. 이 포스팅에서는 스프링의 설정값에 대한 정보가 담긴 web.xml파일의 작성법과 각 설정이 어떤한 의미를 가지고 있는지 알아보는 시간을 가지도록 하겠습니다. 공통부분 xml파일이라고 선언하는 부분이며 설정에는 한글이 들어가는 경우가 간혹 있기 때문에 인코딩 속성은 UTF-8을 권장합니다. 태그는 .. 2020. 1. 26.
[Spring] @ResponseBody, @RequestBody와 Ajax, JSON 오늘은 여러 어노테이션 중 @ResponseBody와 @RequestBody에 대해서 알아보고자 합니다. 이 두개의 어노테이션은 가장 대표적인 @Service, @Controller와 같은 대장급(?) 어노테이션을 제외한다면 가장 많이 사용하는 어노테이션이고 또 사용하는 방법도 무척이나 간단하여 한 번 알아두고 기억하고 있는다면 웹 개발에 있어서 많은 도움이 되리라 생각합니다. 우선 이 두개의 어노테이션의 공통 접점은 JSON이라는 데이터 타입입니다. JAVA에서는 JSON이라는 데이터 타입이 없기 때문에 프론트단에서 자바에게 JSON타입의 데이터를 전달해주거나 혹은 반대로 JAVA의 객체데이터를 JSON형태로 프론트단에 전달해야 하는 경우 각각 @RequestBody와 @ResponseBody가 그 역.. 2020. 1. 25.
[Spring] 에서 엑셀파일 생성 후 다운로드 방법 Spring프레임워크에서 엑셀파일 생성 업무프로젝트에서 자주 나오는 서비스중에 단골로 나오는 대표적인 기능이 엑셀파일 기능입니다. DB상에 있는 데이터가 되었던 아니면 다른 데이터이든 엑셀파일 형태로 다운로드를 받아 업무적으로 사용하는 경우가 많기 때문에 현업에서 일을 한다면 반드시 알아야 하는 기능중 한가지라고 생각합니다. 다행이 스프링프레임워크에서는 POI라고하는 좋은 엑셀라이브러리가 있어서 개발자가 보다 손쉽게 개발할수 있습니다만 가끔씩 라이브러리를 가져다가 사용만 하다보니 내 자신이 개발자가 맞나? 라는 의문이 듭니다. 하지만 생산성을 위해서는 이미 있는 좋은 라이브러리를 쓰지 않을 이유는 없다고 생각합니다.(물론 직접만들 능력이 없기도 하지만...) 엑셀에 대한 파일처리는 서버가 가지고있는 정보.. 2020. 1. 13.