[Spring] Spring Security PrincipalDetails 와 mustache template
·
Framework & Library/Spring
📍 Spring Security PrincipalDetails 스프링 시큐리티는 /login 주소 요청이 오면 해당 요청을 낚아채서 로그인을 진행시킬 수 있다. => WebSecurityConfigurerAdapter를 상속받아 configure을 override 한후 다음과 같이 작성한다. @EnableWebSecurity // 해당 파일로 시큐리티를 활성화 @Configuration // IoC public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { // super 삭제 - 기존 시큐리티가 가지고 있는 기능이..
[LOATODO] 6. 로스트아크 오픈 API - 카오스던전 1수 거래 가능재화
·
Project/LOATODO
1. 서론저번에 카오스 던전 수확 데이터를 DB에 저장하고 웹에 출력하였다여기서 거래가능 재화를 추려서 1수에 얼마나 버는지 알아보려고한다.   2. 개발2 - 1. 재련재료 데이터 저장[Controller]@ResponseBody@GetMapping("/api/saveCode50000")public JSONArray SaveCode50000() { JSONArray result = marketApiService.CallMarketCategories(50000); result.forEach((data) -> { ItemsDto itemsDto = new ItemsDto((JSONObject) data); Items save = itemsService.save(itemsDto); ..
[LOATODO] 로스트아크 오픈 API - 카오스 던전 수확 데이터 가져오기
·
Project/LOATODO
1. 서론인벤에서 괜찮은 데이터를 발견해서 웹으로 만들어보았다.  엑셀에 1200개 이상의 카던 수확 데이터가 존재해서 이걸 maria DB에 테이블을 만들어서 넣어놓았다.테이블은 Spring JPA를 이용하였고,데이터를 가져오는 것은 DBeavear를 사용하였다  2. 개발2 - 1. DTO@Entity@Data@NoArgsConstructor@AllArgsConstructor@Builderpublic class ChaosDungeon { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) // 번호 증가 전략을 데이터베이스를 따라간다. private int id; @Column(nullable = false) @ColumnDefault..
[Java / Spring / JPA] Native Query와 QLRM 라이브러리
·
Framework & Library/Spring
JPA(Java persistence API)를 사용하여 서비스를 구현하다 보면 JPA에서 제공하는 기능만으로는 조회가 불가능한 경우가 존재한다. 대표적으로 엔티티 객체를 그대로 조회하는 것이 아닌 DTO에 맞춰서 조회하는 경우이다. [ 예시 / 인스타그램 클론코딩 중 구독 정보 조회 커리 ] SELECT u.id, u.username, u.profileImageUrl, if((SELECT 1 FROM subscribe WHERE fromUserId = 1 AND toUserId = u.id),1,0) subscribeState, if((1=u.id),1,0) equalUserState FROM user u INNER JOIN subscribe s ON u.id = s.toUserId WHERE s.fr..
[Java / Spring / JPA] 맵핑 어노테이션 @Entity, @Table, @Column, @Id
·
Framework & Library/Spring
객체 - 테이블 맵핑 : @Entity, @Table 필드 - 컬럼의 팹핑 : @Column 기본키의 맵핑 : @Id 조인 맵핑 : @ManyToOne, @JoinColumn 📕 @Entity 테이블과의 매핑 @Entity가 붙은 클래스는 JPA가 관리하는 것으로, 엔티티라고 불림 제약조건 필드에 final, enum, interface, class 사용불가 생성자 중 기본 생성자가 반드시 필요함 속성 Name - 엔티티 이름을 지정, 기본값으로 클래스 이름을 그대로 사용함 📕 @Table 엔티티와 매핑할 테이블을 지정 생략 시 매핑한 엔티티 이름을 테이블 이름으로 사용 속성 Name - 매핑할 테이블 이름을 지정 Catalog - DB의 Catalog를 매핑 Schema - DB 스키마와 매핑 Uniq..
[Java / Spring] Spring Security란?
·
Framework & Library/Spring
대부분의 애플리케이션에서는 회원관리를 하고 있고, 그에 따른 인증(Authentication)과 인가(Authorization)에 대한 처리를 해주어야 한다. Spring에서는 Spring Security라는 별도의 하위 프레임워크를 제공하고 있다. Spring Security란? Spring기반 애플리케이션의 보안을 담당하는 스프링 하위 프레임워크 Spring Security는 '인증(Authentication)'과 '권한(Authorization)'에 대한 부분을 Filter의 흐름에 따라 처리를 하고 있다. spring security는 filter 기반으로 동작하기 때문에 spring MVC 와 분리되어 관리 및 동작한다 > 보안관련 용어 정리 접근 주체(Principal) : 보호된 대상에 접근..
[Java / Spring] Spring Security 로그인 정보 가져오기 @AuthenticationPrincipal
·
Framework & Library/Spring
로그인한 사용자의 정보를 파라미터로 받아오고 싶을 때, Java 표준 Principal 객체를 받아서 사용한다. 하지만, Java 표준 Principal 객체는 name 정보만 참조할 수 있다. @AuthenticationPrincipal 어노테이션을 사용하면 UserDetailsService에서 Return한 객체를 파라미터로 직접 받아 사용할 수 있다. 인스타그램 클론코딩에서 UserDetailsService 인터페이스를 상속받아 구현체를 만들었다. @RequiredArgsConstructor @Service public class PrincipalDetailsService implements UserDetailsService { private final UserRepository userReposi..
[LOATODO] 로스트아크 오픈 API - 소나벨 vs 하누마탄 비교
·
Project/LOATODO
1. 서론찬란한 명예의 돌파석 가격이 감소하면서경이로운 명예의 돌파석 가격과 비슷해짐에 따라소나벨과 하누마탄의 수익이 어느정도 비슷할 꺼같아서 비교를 해보았다.각각 2수당 얻는 재료의 평균은 유튜브 영상을 참고하였다.  2. 개발2 - 1. DTO소나벨, 하누마탄 데이터를 각각 저장할 DTO를 만들었다.@Datapublic class SuppressionDto { private String nameData1; private Double countData1; private Double priceData1; private Double totalData1; private String nameData2; private Double countData2; private Double pric..
[LOATODO] 로스트아크 오픈 API - 거래소 데이터 가져오기
·
Project/LOATODO
1. 서론소나벨, 하누마탄 골드비교, 카던 보상 비교 등 데이터 비교를 만들 때,파괴석, 돌파석등 거래소에서 데이터를 구해서 비교하는 경우가 많다.하지만 아래 사진과 같이 API로 한번에 데이터를 가져올 때 10개씩 밖에 가져오지 않아서 한번에 가져오는 메서드를 만들어보았다.   2. 개발2 - 1. 기존 CallMarketCategories 메소드 수정public JSONArray CallMarketCategories(int CategoryCode) { try { URL url = new URL("https://developer-lostark.game.onstove.com/markets/items/"); HttpURLConnection httpURLConnection = (Http..