본문 바로가기

전체 글

(11)
Spring Security 6 Security Context null 문제 증상 UserDetailsImpl userDetails = new UserDetailsImpl(user); Authentication authentication = new UsernamePasswordAuthenticationToken(userDetails, "", userDetails.getAuthorities()); SecurityContextHolder.getContext().setAuthentication(authentication); SecurityContext sc = SecurityContextHolder.getContext(); Security Context 를 저장하였으나 같은 세션임은 확인됨에도 불구하고 SecurityContext.getContext() 또는 @Authenticatio..
React - 이벤트가 일어나는 요소의 클래스명 가져오기 기존 코드 //생략 this.div = React.createRef(); } hoverEvent = (e) => { e.target.style.background = "#eee"; } outEvent = (e) => { e.target.style.background = "white"; } componentDidMount() { this.div.current.addEventListener("mouseover", this.hoverEvent); this.div.current.addEventListener("mouseout", this.outEvent); } componentWillUnmount() { this.div.current.removeEventListener("mouseover", this.hover..
Spring 이미지 내려줄때 캐시설정하기 적용 프로젝트 https://github.com/hanghae99-MEALCHAK/MEALCHAK-server-application GitHub - hanghae99-MEALCHAK/MEALCHAK-server-application Contribute to hanghae99-MEALCHAK/MEALCHAK-server-application development by creating an account on GitHub. github.com 기존에 /image 경로로 접근할때 file:/root/image로 연결시켜주는 설정을 했었다 WebMVCConfig @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { regist..
Querydsl IDE에서는 실행이 되는데 build가 실패한다면? 온갖 블로그에서 나오는 방법을 다 따라했는데도 불구하고 계속 빌드가안된다면... 클린을...먼저 실행하고 빌드하니까 된다...... 음식이 짤때는 소금을 넣으면된다 급으로 간단한건데 나는 이 간단한걸 못찾아서 고생했다.. ++ 쿼리dsl을 컴파일시킬때 q클래스들이 생기는 폴더를 지우는 로직을 추가해도된다 ex) compileQuerydsl{ delete(querydslSrcDir) options.annotationProcessorPath = configurations.querydsl } querydslSrcDir은 지정해놓은 q클래스들이 생성될 폴더를 지정해둔변수임 해당 방법으로 사용하면 굳이 clean없이 바로바로 build가 가능하다
JPA querydsl 사용후 성능개선 (이번엔 진짜로..) 적용한 프로젝트 https://github.com/hanghae99-MEALCHAK/MEALCHAK-server-application/ GitHub - hanghae99-MEALCHAK/MEALCHAK-server-application Contribute to hanghae99-MEALCHAK/MEALCHAK-server-application development by creating an account on GitHub. github.com 이전글에서 사용했던 join fetch는 나가는 쿼리문의 개수를 줄었으나 jpa 함수가 실행되질않았다 예를들어 checkvalid라는 컬럼에 불리언값을주고 해당값이 True인것만 반환해서 OrderTime이라는 항목으로 오름차순 정렬을 하려고했을때 findAllBy..
JPA join fetch 사용후 성능개선(인줄 알았는데 아님) 적용한 프로젝트 https://github.com/hanghae99-MEALCHAK/MEALCHAK-server-application/ GitHub - hanghae99-MEALCHAK/MEALCHAK-server-application Contribute to hanghae99-MEALCHAK/MEALCHAK-server-application development by creating an account on GitHub. github.com List findAllByCheckValidTrueOrderByOrderTimeAsc(); 적용전의 코드 @Query(value = "select p from Post p join fetch p.chatRoom join fetch p.user join fetch p..
Spring Embedded Redis 사용하며 겪은문제 redis가 현재 프로젝트를 진행하면서 정말 많은 고통을 준다. 초기에도 그랬고 지금도 그렇다 "Can't start redis server. Check logs for details" 이 문구가 날 돌아버리게한게 대체 몇번인지 셀수조차없다 초기에 항상 빌드후 실행할때마다 프로세스에서 redis server를 찾아 끄거나 인텔리제이를 껐다켜거나 최후에는 재부팅하고나면 해결이 됐었고 최초 첫번째 실행때는 반드시 실행이 됐었는데 오늘은 또 갑자기 첫실행조차 실패했다 gradle에서 redis 버전도 올려보고 포트도 바꿔보고 하던끝에 결국 찾아낸 해결법 EmbeddedRedisConfig에서 @PostConstruct public void start() { redisServer = new RedisServer..
웹소켓채팅 적용하며 겪은 문제점&해결법 http와 websocket의 헤더는 서로 다른방식이라 웹소켓의 메세지를 받는 컨트롤러에서 userdetails를 받을수가없음 jwt를 발급하여 해당 토큰을 stomphandler에서 메세지를 인터셉트할때 accessor.getFirstNativeHeader로 토큰을 가져와 사용자를 식별하였음 으레 그렇듯이 채팅에는 항상 악성유저가 생길수있음 추방기능을 적용, 채팅방에 유저가 들어갈때 유저와 채팅방이 매핑된 테이블을 생성하여 관리하는데, 추방시에 해당 row를 삭제하여 더이상 악성유저가 해당 채팅방에 접근할수 없도록함 위의 방법을 사용하였을때 악성유저가 새로고침이나 페이지를 나가기전까지는 계속 채팅방에 있을수있음 메시지의 타입에 BAN 타입을 추가하고, 방장이 BAN타입으로 해당유저의id를 보내면 해당 ..