본문 바로가기
관리자

Programming-[Backend]

(421)
[링크] JPA Map 결과 리턴(결과 집합 그루핑) JPA에서 결과를 Map형태로 추출하고 싶을때는, transform 메서드와 GroupBy.groupBy 인터페이스를 활용하면 된다. 3.2.4. 결과 집합(aggregation) com.mysema.query.group.GroupBy 클래스는 메모리에서 쿼리 결과에 대한 집합 연산을 수행하는 집합 함수를 제공한다. 다음은 사용 예이다. 부모 자식 관계에 대한 집합 연산 import static com.mysema.query.group.GroupBy.*; Map results = query.from(post, comment) .where(comment.post.id.eq(post.id)) .transform(groupBy(post.id).as(list(comment))); 이 코드는 post id와 관련..
[스프링 시큐리티]20. 실시간 권한 업데이트, 허용필터 1. 실시간 처리 실시간 처리는 관리자가 DB에 자원/권한 정보를 업데이트 할 때, 실시간으로 앞서 작성한 ResourceMap에 업데이트를 해서 사용자들이 웹 사이트를 이용하는데 문제가 없도록 하는 작업이다. reload 메서드 추가 처리를 위해서 UrlFilterInvocationMetadataSource에 reload 메서드를 추가한다. iterator를 활용하는 문법에 유의하자. public void reload() { LinkedHashMap reloadedMap = securityResourceService.getResourceList(); Iterator iterator = reloadedMap.entrySet().iterator(); requestMap.clear(); //기존 정보를 지움..
[스프링 시큐리티]19. DB 연동 인가처리 -FilterInvocationSecurityMetadataSource 구현 1. DB 연동 : requestMap 가져오기 requestMap.put(new AntPathRequestMatcher("/mypage"), Arrays.asList(new SecurityConfig("ROLE_USER"))); 이제 UrlFilterInvocationMetadataSource에 위와 같이 강제로 url과 권한을 삽입하는 것이 아니라 DB에 있는 role-resource 정보를 넣어주는 것을 실습해본다. 우선 유저가 요청한 request url에 따라 해당 url에 접근 가능한 role들을 정의하는 requestMap 객체를 가져오는 코드를 작성해본다. SecurityConfig 수정 지난 글 맨 마지막 부분에서 SecurityConfig 파일의 customFilterSecurityIn..
[TIL][링크] yyyyMMddhh24miss, MSSQL CONVERT 변환 코드 표 yyyyMMddhh24miss 은 Oracle에서 사용하는 날짜/시간 타입이다. 20220216175803 (2022-02-16 17:58:03) 형식으로 저장된다. 사외 시스템과 api를 연동하는 문서에 해당 단어가 적혀있어서 찾아보게 되었다. SQL dialect별 해당 포맷으로 날짜값을 추출하는 식은 아래와 같다. (참조1) MSSQL SELECT CONVERT(CHAR(8), GETDATE(), 112) + REPLACE(CONVERT(CHAR(8), GETDATE(), 108), ':', '') Oracle SELECT TO_CHAR(SYSDATE, 'yyyymmddhh24miss') FROM DUAL MSSQL 날짜 변환표 - 참조 2 번호 쿼리 결과 코드 0 CONVERT(CHAR(19), ..
[TIL][작성중]RestTemplate 사용하기 참조 링크 https://blog.naver.com/hj_kim97/222295259904 https://tecoble.techcourse.co.kr/post/2021-07-25-resttemplate-webclient/ https://sjh836.tistory.com/141 -------------- REST Template으로 GET을 보내야하는데 header값을 추가하고 싶다면 exchange 메서드를 활용해야한다. https://stackoverflow.com/questions/21101250/sending-get-request-with-authentication-headers-using-resttemplate
[TIL][링크] 타임리프 부트스트랩 클래스 표 - grid options https://getbootstrap.com/docs/4.1/layout/grid/ col-sm, col-md 등과 같이 부트스트랩에서 제공하는 class 이름에 대한 설명이 있는 링크이다.
[스프링 시큐리티]18. DB 연동 인가처리 - 스프링 MVC 복습, FilterInvocationSecurityMetadataSource 기초 구현 0. 소스 코드 수정 강의에서 DB 연동 처리를 하기 위해서 JPA를 사용하였다. 그런데 2년 전 강의라 그런지, Entity 구조상 @ManyToMany 등 JPA 안티패턴이 있고 잘못된 부분들이 좀 있어서 Entity 및 전체 구조를 적절히 수정했다. 아래 주소의 레포지토리 - master branch에 수정된 파일들을 담았다. (원본은 keep 브랜치) https://github.com/CJ0823/corespringsecurity 복습도 할겸, thymeleaf와 controller 코드를 잠시 살펴보자. 강의 소스코드에는 권한을 등록하는 admin/role/register 주소의 view 파일이 존재하지 않았다. 그래서 detail.html 파일을 복사해서 조금 바꿔주었다. register.ht..
[스프링 시큐리티] 17. Ajax 인증 구현 - DSL, CSRF 1. DSL DSL(Domain-specific language, 도메인 특화 언어)는 특정화된 도메인을 적용하는데 특화된 언어이다. HTML과 같이 웹 전체에서 널리 쓰이는 언어의 개념이 아니라 특정한 도메인에서만 쓰이는 언어라고 보면 된다. 지금 학습하고 있는 맥락에서 이해하자면, filter나 handler 등의 http. 환경설정 메서드의 set를 만든다고 생각하면 될 것 같다. spring security를 전반적으로 다 이해하고 환경설정 set를 만들어서 활용할 정도가 되어야 사용할 것 같다. 그래서 이 부분은 가볍게 이해하고 넘어가면 될 것 같다. AbstractHttpConfigurer 초기화를 위한 설정 클래스이다. 이 클래스를 이용해서 스프링 시큐리티의 환경설정 set를 만든다. con..