분류 전체보기

JWT를 이용한 로그인 시 브라우저로 로그인하는 예제가 없는 이유 Spring security에서 jwt를 통한 로그인에 관한 글을 보면 대부분의 실습(및 테스트)는 postman같은 API요청 프로그램을 이용해서 합니다. JWT는 무상태성을 유지하는 토큰 인증방식으로 클라이언트, 서버가 분리되어있는 REST API에서 사용합니다. 그렇기 때문에 만약 여러분이 Thymeleaf, JSP,Mustache 등의 SSR 템플릿 엔진을 사용한다면 JWT를 구현하지 않는것이 좋습니다. JWT는 일반적으로 클라이언트 LocalStorage 영역에 서버에서 받은 토큰을 보관합니다. 그리고 서버에 요청 시에는 LocalStorage에 있는 토큰을 빼내고 Request Header의 Authorization값에 토큰을 ..
목표 이 글에서는 스프링 시큐리티의 전체적인 구조와 같은 원론적인 내용보다는 기본 세팅에 대한 코드를 보여주고, 해당 코드들이 무슨 역할을 하는지를 위주로 설명합니다. spring security를 이용해 인증과 인가를 구현하고 현재 로그인된 정보를 이용해 thymeleaf에서 다른 화면을 보여주기까지 구현합니다. 로그인정보에 대한 데이터로서 DB까지 이용합니다. 순서는 다음과 같다' 개발환경 security 설정 동작 설명 개발환경 Springboot 2.7.8 H2 JPA thymeleaf spring security lombok build.gradle dependencies { //starter implementation 'org.springframework.boot:spring-boot-start..
Redis의 pub/sub Publish / Subscribe 란 특정한 주제(topic)에 대하여 해당 topic을 구독한 모두에게 메시지를 발행하는 통신 방법으로 채널을 구독한 수신자(클라이언트) 모두에게 메세지를 전송 하는것을 의미한다. 하나의 Client가 메세지를 Publish하면, 이 Topic에 연결되어 있는 다수의 클라이언트가 메세지를 받을 수 있는 구조이다. Springboot에서 redis의 pub/sub구현하기 RedisConfig @Configuration public class RedisConfig { @Value("${spring.redis.host}") private String redisHost; @Value("${spring.redis.port}") private int r..
설치 먼저 redis를 설치해보자. https://github.com/microsoftarchive/redis/releases에서 원하는 버전을 다운받자. msi파일을 실행하면 알아서 설치가 진행된다. 설치된 폴더에 가서 redis-cli.exe를 실행해보자 실행창에서 다음과 같이 테스트해보자. ping을 입력해서 결과가 pong이 나오면 되고 , set key1 value1을 입력해 DB에 데이터를 저장하고 get key1을 통해 value1값을 얻을 수 있다. 간단한 redis 사용법은 다음 글을 참고하자. https://velog.io/@rlaghwns1995/Redis-%EA%B8%B0%EB%B3%B8%EC%A0%95%EB%A6%AC springboot에서 redis 사용하기 자바에서 제공하는 r..
· 배포
https://brilliantdevelop.tistory.com/155에 이어서 이제는 DB를 포함해서 배포하려 합니다. DB없이 heroku배포에 성공했다면 DB포함하는 건 별로 어렵지 않습니다. ※ClearDBMySQL은 문제가 많다고 합니다. ClearDB로 성공하신분도 많겠지만 전 실패했습니다. 여기서는 JawsDBMySQL로 진행합니다. ※로컬에서 mysql, JPA 설정은 따로 설명하지 않습니다. heroku App에 DB 추가하기 먼저 Resources 탭에 가서 Find more add ons를 클릭합니다. 이후 JawsDBMysSQL을 선택한 후 Install 해줍니다 App to provision to에는 App 이름을 입력한 후 선택해주면 됩니다. 그리고 submit order fo..
· 배포
시작 전 참고사항 heroku 회원가입 및 카드등록(visa카드) 해놓기 유료에요. 한달에 7달라 개발환경(DB는 mysq로 할 예정) localhost:8080에서 보이는 home.html 화면을 prac.herokuapp.com 에서도 똑같이 보는 것 까지가 이 글의 목표이다. (localhost:8080에서도 home.html 화면이 안 보이면 이 글은 나중에....) mysql 연동하는 건 다음글에서... 프로젝트와 깃허브 연동 해놓기 heroku에서 배포를 하는 방법은 3가지가 있다 이중 우리는 깃허브를 이용한 배포를 할 것이다. (깃과 깃허브 방식은 똑같다고 할 수 있다. 단지 heroku 깃명령어를 통해서하냐, 아니면 heroku사이트에서 제공하는 여러 버튼을 이용해서 하냐의 차이일 뿐 ) ..
· 자바
자바에서 가장 많이 보는 Exception을 꼽으라면 역시 NullPointerException이다. 줄여서 NPE라고 하겠다. NPE는 RunTimeException을 상속받은 Exception으로서 컴파일단계에서는 발생하지않고 실행도중에 발생한다. 기본적으로는 Null인 객체로부터 무언가를 하려고 하는 상황에서 발생한다. 여기서는 NPE의 해결방법보다는 단순히 어떤 상황에서 발생하는지만 작성하겠다. (특이한 NPE를 마주칠 때마다 추가할 것이다.) 1. null인 객체의 메소드 또는 필드 사용 String str= null; str.split("abcd"); 가장 많이 보는 형태이다. 아마 여러분들이 경험하는 NPE도 대부분 이것일 것이다. 웹 개발에서는 파라미터가 넘어올 것으로 기대했는데 안 넘어온..
· 기타
"통신 프로토콜 또는 통신 규약은 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계이다." 위키백과에서는 프로토콜을 이렇게 정의하고 있고 이어서 TCP/IP, HTTP와 같은 프로토콜 종류부터 프로토콜 구성요소 등에 관해 설명한다. 하지만 프로토콜이 뭔지 이해하지 못했다면 이런 설명은 약간 뜬구름 잡는 식이 될 수 밖에 없다. 그래서 여기서는 "프로토콜" 이라는 것 자체에 대해 이해해보도록 하자. 통신의 시작과 디지털변조 옛날에는 빛과 소리로 신호를 전달하였지만 19세기 접어들면서 전기로 신호를 전달하기 시작했습니다. 최초의 전기신호를 개발한 폰 죄머링부터, 모스( 모스부호의 그 모스), 벨과 그레이(전화) 등에 의해 본격적으로 멀리 떨어진 곳에서 서로 신호를 보내는 통신의 시대..
· 자바
롬복이란 @Getter @Setter @NoArgsConstructor @ToString @AllArgsConstructor public class Employee { private Integer employeeNumber ; private String lastName ; private String firstName ; private String extension ; private String email ; private String officeCode ; private Integer reportsTo ; private String jobTitle ; } 위와같은 Employee 클래스에서 getter, setter, toString, 생성자 등을 직접 만들지 않고 @Annotation을 추가하는 것만으..
Spring data jpa를 사용해서 다음과 같이 Controller 단에서 save() 메소드를 실행해봤다. @RequiredArgsConstructor @Controller public class HomeController { private final IdeaRepository ideaRepository; @PostContruct @Trasactional public void initDummyData(){ Idea idea = new Idea(); ideaRepository.save(idea); } } 안 된다. Spring은 @Trasactional은 Controller단에서 적용이 안되게 되어있다. 그런데 여기서 중요한건 @Trasactional이 Controller에서 적용되지 않는 점이 아니..
한창희
'분류 전체보기' 카테고리의 글 목록 (3 Page)