백엔드 (21) 썸네일형 리스트형 스프링 시큐리티는 복잡합니다. 다만, 공통된 인증 흐름은 존재합니다. 들어가는 말최근에 스프링부트 공부를 시작하면서, 큰 난간이었던 것들 중 하나는 스프링 시큐리티에 관한 것이었습니다. 아무리 내부적으로 추상화 및 캡슐화되어 사용자는 노출된 인터페이스를 기반으로 도구를 사용하면 된다고 해도, 스프링 시큐리티가 내부적으로 어떻게 사용자의 자격증명을 처리하는지 그 흐름을 이해하지 못하고는 제가 도구를 쓰는 것인지, 도구가 나를 쓰는 것인지 긴가민가할 때가 많았습니다. 따라서 오늘은 스프링 시큐리티가 내부적으로 어떤 흐름을 통해 동작하는지 간략하게 살펴보며, 앞으로 학습의 기틀을 단단히 다지는 시간을 가질까 합니다. 스프링 시큐리티?스프링 시큐리티는 스프링 기반 애플리케이션에서 인증(Authentication)과 인가(Authorization)를 처리하는 보안 프레임워크입니다... 최근 1달 간 자바를 공부하면서 알게된 사실( 자바스크립트 vs 자바) 들어가는 말최근에 Java를 공부하면서, 평소에는 이해하지 못했던 이론이나 개념들이 이래서 사용하는 거구나! 라며 홀로 뮤레카를 외친 경험을 하였습니다. 오늘은 이에 대해서 3가지만 간략하게 정리해보는 시간을 가져볼까 합니다( 서로 다른 언어이기 때문에 알게된 점은 많지만 그 중 몸소 와닿은 3가지만 정리합니다. ). 프로그래밍 언어는 서로 다른 철학과 목적을 가질 수 있습니다. Java와 JavaScript는 이름이 비슷하지만, 그 특성과 사용 사례는 매우 다릅니다. 특히 디자인 패턴, 자료구조, 알고리즘의 개념을 접근하는 방식에서 차이를 느낄 수 있는데, JavaScript에서는 이러한 개념들의 필요성을 크게 느끼지 못하다가, Java에서의 활용을 보며 그 중요성을 실감하게 되었습니다. 디자인.. [스프링 시큐리티] Refused to display 'http://localhost/' in a frame because it set 'X-Frame-Options' to 'deny' 에러 개선 문제 발단- 스프링 시큐리티에서는 기본적으로 X-Frame-Options 을 deny(해당 경로에 대한 모든 frame 삽입 차단)로 지정해두기 때문에, 데이터베이스 조작을 위한 인터페이스를 iframe 형식으로 렌더링 시 이를 차단하기 때문입니다. - 즉, 해당 문제를 개선하려면 해당 경로에 접속하는 경우에는(동일 경로에 한정하여서는) 렌더링되는 것을 허용하도록 스프링 시큐리티 구성 파일에서 설정해주면 됩니다. 코드 적용- 스프링 시큐리티 6.11 버전이상에서 적용- SecurityConfig 파일에 @Configuration@EnableWebSecuritypublic class SecurityConfig { @Bean public SecurityFilterChain filterChain(H.. [NodeJS] 이메일의 도메인이 존재하는지 확인해보자 포스트 목적 노드메일러 등의 SMTP 를 활용한 메시지 전송 패키지나 도구를 사용할 때, 이메일을 받는 이의 도메인이 존재하는지 아닌지 확인하기 위한 기능을 만들어 보았고, 이에 대한 정리를 위해 작성한다. 우선 이번 기능을 구현하기 앞서 사전 지식이 필요하다. 세부적으로 살펴본다면 DNS의 전반적인 내용을 다뤄야 하는게 맞지만, 필요한 개념만 살펴본다면 그 중 제일 중요한 MX 레코드에 대해 언급하고자 한다. MX 레코드 MX 레코드는 쉽게 말해 SMTP 로 전송되는 이메일 메시지를 라우팅(경로 나누기) 하는 방법을 나타내는데 쓰인다. 그래서 해당 도메인에 대한 MX레코드를 조회 해보면, 각 라우트 가능한 서버가 우선순위에 따라 나눠서 조회되는 것을 확인할 수 있다. 즉, 각 우선순위에 따라 우선순위가.. [nodejs] 엑셀 파일을 json 데이터로 변환 해보기 node-telegram-bot-api 와 mongoose 를 사용하여 텔레그램 챗 봇을 만들어 보던 중 엑셀 파일을 json 형태로 변환해서 데이터베이스에 저장하는 기능을 만들어 보기로 했다. 이 기능을 구현하는 것에 큰 의미는 없지만, 연습 삼아서 해본다. 텔레그램 봇이나 데이터베이스 사용을 떠나서 엑셀 파일을 json 형태로 바꾸는 것에만 초점을 두고 기록해둘 것이다. 패키지 설치 우선 json 형태로 변환하기 위해 npm 패키지를 설치한다. 이번에 사용한 패키지는 convert-excel-to-json 이라는 것인데, 자세한 사용법은 아래 패키지 공식 깃허브에 자세하게 나와있다. npm install convert-excel-to-json GitHub - DiegoZoracKy/convert-ex.. [node.js] express.json() 간략 정리 express.json() 보통 app.use(express.json()) 형태로 쓰이는 미들웨어는 Express 애플리케이션에서 JSON 형태의 요청(request) body를 파싱(parse)하기 위해 사용되는 미들웨어(middleware)입니다. 따라서, Express 애플리케이션에서 JSON 형태의 요청 body를 받아야 한다면 이 코드를 사용해야 합니다.(사용하지 않을 경우 인간이 알기 어려운 용어로 전달되거나 예기치 못한 에러가 발생할 수 있습니다.) 예를 들어, 클라이언트에서 서버로 JSON 형태의 데이터를 전송할 때, Content-Type 헤더를 application/json으로 설정하고 요청 body에 JSON 데이터를 포함하여 전송합니다. 이때, app.use(express.json(.. [node.js] morgan "HTTP 요청과 응답에 관련한 정보를 기록하는 미들웨어" morgan Node.js 웹 애플리케이션에서 * HTTP 요청 로깅을 위한 로깅 미들웨어 패키지입니다. 이 패키지는 HTTP 요청의 상태 코드, 응답 시간, 요청 메소드, 요청 URL, 요청 바디 등을 기록할 수 있습니다. 즉, 클라이언트 측과 서버 측 사이에서 HTTP 요청과 응답 사이에 발생하는 정보들을 기록해주는 미들웨어 입니다. Morgan 패키지는 사용하기 쉽고 유연합니다. 기본적으로 콘솔에 로그를 출력하지만, 파일에 로그를 저장하거나 로그를 다른 곳으로 전송하는 등 로깅을 다양한 방식으로 구성할 수 있습니다. 또한 로그 포맷을 구성할 수 있어서, 개발자가 원하는 대로 로그를 출력할 수 있습니다. Morgan 패키지는 Node.js의 Express 프레임워크와 함께 많이 사용됩니다. Expre.. [node.js] node.js 에서 express서버를 구축할 때 포트 지정 시 process.env.PORT 를 사용하는 이유 node.js 에서 일반적으로 포트를 개설할 때 아래 두 가지 방식 중에 하나를 사용합니다. 일반적으로 아래 예시 중 전자의 방식을 자주 사용하는데, 전자 보다는 후자의 방식을 사용하는 것이 더욱 안전합니다. // 포트번호를 직접 지정한 경우 const port = 3000 app.listen(port,()=>{ console.log(port +'포트로 대기중 입니다.') }) ---------------------------------------- //process.env.URL 를 사용한 경우 const port = process.env.URL || 3000; app.listen(port,()=>{ console.log(port +'포트로 대기중 입니다.') }) 일단, 전자의 방식을 사용하는 것을 .. 이전 1 2 3 다음