반응형

프로그래밍 231

[Javascript, 자바스크립트]만 19세 미만 체크하기, 나이 체크 함수

function isAdult(year, month, day) { const today = new Date(); const birthday = new Date(year, month - 1, day); const diffYear = today.getFullYear() - birthday.getFullYear(); const diffMonth = today.getMonth() - birthday.getMonth(); const diffDay = today.getDate() - birthday.getDate(); // 년도 차이가 19이면 월과 일 차이도 체크 if (diffYear === 19) { // 월 차이가 마이너스면 아직 생일이 지나지 않은 상태 if (diffMonth < 0) { return t..

API를 Restful 하게 작성하기 위해 고려해 볼 만한 5가지 디자인

" beyondj2ee "글을 참고하여 정리하였습니다. “100% RESTful 아키텍쳐링“을 다 지킬수는 없지만 최소한 아래에 “언급하는 5가지 디자인“에 대해서는 인식할 필요가 있습니다. 1. API의Endpoint가 오직 한개인가? 실제 경험한 사례로써 한번은 어떤 시스템의 연동 문서를 보니 “오직 한개의 URL로 fix” 되어 있었습니다. 예를 들어서 URL은 “http://example.com/rest” 이며, 모든 request는 해당 URL로 통합니다. 실제 자원에 대한 정보, 호출 서비스 정보, 파라미터 정보 등은 “XML 형태의 Body 데이터“로 전송 하도록 되어 있었습니다. REST의 매우 중요한 구성 요소중 하나는 “Resource” 입니다. “Resource”의 의미는 말 그대로 ..

[java/자바] replaceAll(), trim() 공백 제거 안될 때

replaceAll (" ", "" )이나, trim() 으로 간단 하게 공백을 제거하려 했지만 제거가 안되는 경우가 있다. 이유를 찾아보니.. 상기 코드로 삭제되지 않는 이유는.. "CJK 문자셋에서 'IDEOGRAPHIC SPACE'라고 불리는 유니코드는 \u3000이며, HTML에서는 으로 표현, 폰트가 이를 지원하지 않을 경우, 실제로는 보이지 않는 코드로만 존재하는 공백" 이럴 경우 다음과 같은 정규식을 통해 제거가 가능. // 모든 공백 제거 String str =originalString.replaceAll("\\p{Z}", ""); // 앞뒤 공백만 제거(trim) String str =originalString.replaceAll("(^\\p{Z}+|\\p{Z}+$)", ""); 참고 :..

JavaScript에서 return과 break 명령문의 차이점과 사용법

return의 용도 MDN의 설명에 따르면 'return 명령문은 함수 실행을 종료하고 주어진 값을 함수 호출 지점으로 반환합니다.'라고 되어있다. 함수 중단 주어진 값을 함수 호출 지점으로 반환 함수에서 return 명령문에 도달하면 함수의 실행은 그 지점에서 중단되고, 값을 제공한 경우는 함수를 호출한 곳에 그 값을 반환하는데, 이때 값을 명시하지 않으면 undefined를 반환한다. 아래와 같은 명령문은 모두 함수 실행을 중단한다. return; return true; return false; return x; return x + y / 3; return; 만 있는 경우 if 문의 조건이 충족하는 경우 해당 함수를 실행을 중단하고 함수 자체에서 빠져나가라는 의미. Stack.prototype.pop..

[Spring Security] 스프링 시큐리티 Authentication 메커니즘

옥탑방개발자 님의 강의를 보고 정리한 내용입니다. Authentication 메커니즘 인증 (Authentication) Authentication 는 인증된 결과만 저장하는 것이 아니고, 인증을 하기 위한 정보와 인증을 받기 위한 정보가 하나의 객체에 동시에 들어 있습니다. 왜냐하면, 인증을 제공해줄 제공자(AuthenticationProvider)가 어떤 인증에 대해서 허가를 내줄 것인지 판단하기 위해서는 직접 입력된 인증을 보고 허가된 인증을 내주는 방식이기 때문입니다. 그래서 AuthenticationProvider 는 처리 가능한 Authentication에 대해 알려주는 support 메소드를 지원하고, authenticate() 에서 Authentication을 입력값과 동시에 출력값으로도 ..

[Spring Security] 스프링 시큐리티 폼 로그인

옥탑방개발자 님의 강의를 보고 정리한 내용입니다 폼 로그인 DefaultLoginPageGeneratingFilter GET /login 을 처리 별도의 로그인 페이지 설정을 하지 않으면 제공되는 필터 기본 로그인 폼을 제공 OAuth2 / OpenID / Saml2 로그인과도 같이 사용할 수 있음. UsernamePasswordAuthenticationFilter POST /login 을 처리. processingUrl 을 변경하면 주소를 바꿀 수 있음. form 인증을 처리해주는 필터로 스프링 시큐리티에서 가장 일반적으로 쓰임. 주요 설정 정보 filterProcessingUrl : 로그인을 처리해 줄 URL (POST) username parameter : POST에 username에 대한 값을 넘..

[Spring Security] 스프링 시큐리티 Authentication (인증)의 기본 구조

옥탑방개발자 님의 강의를 보고 정리한 내용입니다. 로그인 하기 스프링 프레임워크에서 로그인을 한다는 것은 authenticated 가 true인 Authentication 객체를 SecurityContext 에 갖고 있는 상태를 말합니다. 단 Authentication이 AnonymousAuthenticationToken 만 아니면 됩니다. 로그인 == Authentication(authenticated = true) only if Authentication != AnonymousAuthenticationToken Authentication (인증)의 기본 구조 필터들 중에 일부 필터는 인증 정보에 관여합니다. 이들 필터가 하는 일은 AuthenticationManager 를 통해 Authenticati..

[Spring Security] 큰 그림으로 보는 스프링 시큐리티

옥탑방개발자 님의 강의를 보고 정리한 내용입니다. 스프링 시큐리티의 큰 그림 서블릿 컨테이너 톰켓과 같은 웹 애플리케이션을 서블릿 컨테이너라고 부르는데, 이런 웹 애플리케이션(J2EE Application)은 기본적으로 필터와 서블릿으로 구성되어 있습니다. 필터는 체인처럼 엮여있기 때문에 필터 체인이라고도 불리는데, 모든 request 는 이 필터 체인을 반드시 거쳐야만 서블릿 서비스에 도착하게 됩니다. 스프링 시큐리티의 큰 그림 그래서 스프링 시큐리티는 DelegatingFilterProxy 라는 필터를 만들어 메인 필터체인에 끼워넣고, 그 아래 다시 SecurityFilterChain 그룹을 등록합니다. 이 필터체인은 반드시 한개 이상이고, url 패턴에 따라 적용되는 필터체인을 다르게 할 수 있습니..

[Spring Security] 스프링 시큐리티란?

옥탑방개발자 님의 강의를 보고 정리한 내용입니다. 시큐리티가 필요한 이유 웹사이트는 각종 서비스를 하기 위한 리소스와 서비스를 사용하는 유저들의 개인 정보를 가지고 있습니다. 이들 리소스를 보호하기 위해서 일반적으로 웹 사이트는 두가지 보안 정책을 설정해야 합니다. 서버 리소스 유저들의 개인정보 인증 (Authentication) 사이트에 접근하는 사람이 누구인지 시스템이 알아야 합니다. 익명사용자(anonymous user)를 허용하는 경우도 있지만, 특정 리소스에 접근하거나 개인화된 사용성을 보장 받기 위해서는 반드시 로그인하는 과정이 필요합니다. 로그인은 보통 username / password 를 입력하고 로그인하는 경우와 sns 사이트를 통해 인증을 대리하는 경우가 있습니다. UsernamePa..

[자바, 스프링부트] import 후에도 빨간줄, Cannot resolve symbol

"yooncandoit 님의 글을 참고하여 정리하였습니다." IntelliJ를 사용중이여서 이를 중심으로 설명합니다. - 분명 정상적으로 패키지 또는 클래스가 import가 완벽히 되었는데도 빨간줄이 생기는 경우 - build.gradle 를 다시 적용 해서 에러도 에러도 없었는데 여전히 빨간줄이 생기는 경우 - 이 상태에서도 서버 실행도 잘 되는데, 빨간줄이 안없어지는 경우 - Build를 했더니 Cannot resolve symbol 에러가 발생하는 경우 이 경우는 몇가지로 추려 볼 수 있습니다. 1. 상단 메뉴바 Build > Clean Project 하고 나서, Build >Rebuild Project 해보기 2 . 캐시를 비우고 재실행한다. : 상단 메뉴바 File > Invalidate Cac..

반응형