본문 바로가기
반응형

분류 전체보기43

블로그 방문자 500명 달성, 수익은? 짱이다 . 벌써 블로그 방문자 500명을 달성하였다. 여전히 구글 애드센스는 허가가 안나고 (내가 뭐했다고 맨날 반려야 구글아 정신차려) 카카오 애드핏으로만 연명하고 있는지 한달정도 지났다. 정확히 8월 11일부터 수익이 발생하였고, 9월 8일 현재 수익은 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 237원 만족한다!! 티스토리 수익 예측에 따르면 내 연간 수익은 천원~삼천원 ^^ 목표가 1년에 만원 벌기였는데.. 포스팅좀 자주하고 다른 일상같은 글도 많이 올리면 만원은 채울 수 있지 않을까? 개발 포스팅은 글렀다. 여행포스팅을 해야겠다. 잡다한 블로그가 되어야지. 2022. 9. 8.
Spring security (접근권한 변경) 만약 프로젝트가 실행되고있는 중간에 접근권한을 변경하려면 어떻게 해야할까? 많은 방식을 찾아봤지만 딱히 원하는 방법은 없었다.. spring 버전 2.7미만이었을 때는 이 블로그에서와 같이 Checker를 만들어서 적용하는 방법이 가능했는데, 이 방법은 사용자들이 api에 접근을 할 때마다 DB에서 관련 정보를 불러와 체크해야하는 단점이 있었고, 2.7 이상에서는 해당 방법이 적용되지 않는것 같았다. (내가 멍청해서 안된걸지도..^^) 어찌어찌 머리를 굴려서 생각해보니, 아예 필터쪽에서 관련 데이터들을 바꿔주면 되는거 아닌가? 라는 생각이 들었고, 몇번의 삽질끝에 해당 기능을 만들 수 있었다. 본 포스팅의 코드는 여기서 확인 가능합니다😉 기본적인 Security 설정은 이 포스팅을 기초로 하였고, Sec.. 2022. 9. 6.
Spring Security 설정 (Dynamic) 권한 설정을 Hierarchy를 이용해 적용하는 방법도 있지만, 동적으로 설정해주는 것도 가능하다. 예를들어, /user URL에 GET과 POST 두 가지가 있는데, POST는 ROLE_ADMIN만 접근 가능하다면? Hierarchy 설정은 이런부분에서 유연하게 대처할 수 없다. 이런 상황에서 동적으로 접근권한을 설정한다면 더 유연하게 사용할 수 있으며 컨트롤러에 불필요한 어노테이션(@PreAuthorize)을 붙이지 않아도 된다. 단점은 DB에 권한 관련 설계를 할 때, 어떻게 설계하느냐에 따라 구조가 복잡해질 수 있다는 점이다. 본 포스팅의 코드는 여기서 확인 가능합니다😉 이 포스팅은 DB 설계까지는 하지 않고, 하드코딩으로.. 아래와 같이 접근권한을 제한하여 개발을 진행하려한다. GET POST .. 2022. 9. 2.
Spring Security 설정 (Hierarchy) 보통의 경우라면, ADMIN권한을 가진 회원은 전체 url에 접근할 수 있고, USER권한을 가진 회원이라면 /admin url에는 접근하지 못한다. 권한이 몇개가 되었든 권한에 서열이 존재한다면 Hierarchy를 이용해 간단하게 권한을 설정할 수 있다. 본 포스팅의 코드는 여기서 확인 가능합니다😉 0. 시작 전 테스트를 위해 data.sql 파일에 아래와 같은 sql을 입력해주었다. insert into public.authority (authority_id, role) values (1, 'ROLE_ADMIN'), (2, 'ROLE_USER'), (3, 'ROLE_COMPANY'); insert into public.users (user_id, name, password, authority_id) .. 2022. 9. 2.
Spring Security 설정 (JWT 2) 로그인까지 성공했으니, 로그인한 사용자의 토큰으로 권한별 api를 호출해야한다. 나는 USER, ADMIN 권한 2개를 만들었고, 각 권한은 /user 와 /admin 주소로 들어갈 수 있도록 설정하였다. 그 외의 주소는 전부 접속 가능하도록 만들었다. 보통 설계에서는 ADMIN 권한으로 /user까지 접속 가능한게 대부분이다. 이부분에 관련해서는 다음 포스팅에 작성하도록 하겠다! 본 포스팅의 코드는 여기서 확인 가능합니다😉 0. 토큰을 포함하여 api 호출하기 프론트엔드에서의 호출이나 swagger, postman을 사용하여 api를 호출할 때, 헤더에 Authorization을 넣어서 api 요청을 하면 된다. 이 때, TokenProvider에서 설정한 TokenType을 같이 넣어주어야한다. sw.. 2022. 8. 31.
Spring Security 설정 (JWT 1) 시큐리티의 기본적인 설정이 끝난 후, JWT 설정을 해주었다. 로그인 기능이 있어야 하므로, 간단한 유저테이블과 권한 테이블을 만든 후 관련 설정을 시작하였다. 이 포스팅에서는 로그인 api를 요청할 경우, 토큰을 생성해서 발급하는 과정까지 담아보았다. 본 포스팅의 코드는 여기서 확인 가능합니다😉 1. 기본설정 1. build.gradle spring boot 버전이 올라가면서, 마찬가지로 jwt에 관한 설정도 조금씩 변경되었다. implementation group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.11.2' runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-impl', version: '0.11.2' run.. 2022. 8. 31.
Spring Security 설정 (기본) 시큐리티 설정은 맨날 해도 맨날 모르겠는 설정 중 하나인 것 같다. 포스팅을 하면서 다시 기본을 익히는 시간을 갖도록 해야겠다. 0. 참고 및 코드 spring.io 블로그 해당 코드는 여기에서 확인 가능합니다. 😉 1. 환경 JAVA 8 Spring Boot 2.7.3 Spring Security 2.7.3 2. 기본 설정 1. build.gradle implementation 'org.springframework.boot:spring-boot-starter-security' 2. SecurityConfig spring security 5.7 이상 버전부터 WebSecurityConfigurerAdapter가 Deprecated되었다. spring boot 2.7.3은 spring-security 5... 2022. 8. 31.
Maven Central에 JAVA 라이브러리 등록하기 Maven Central에 JAVA 라이브러리 등록하기 Controller를 만들면서, requestDto에 validation을 넣어 처리하는 경우가 많다. spring-boot-starter-validation에서 제공하는 어노테이션들로 대부분 커버가 가능했지만, 가끔 필요하지만 없어서 아쉬운 validation 이 있었다. 예를들면 파일업로드관련? 지금까지는 request를 받아서 checkParam() 같은 메소드를 만들어 처리를 했었는데, 뭔가 코드가 마음에 들지 않았다. 그래서 프로젝트 내부에 annotation을 만들어 spring에서 제공하는 validation과 같이 사용하였는데... 매 프로젝트마다 이걸 복붙해서 사용한다고 생각하니 정말 별로라는 생각이 들었고.. 그런김에 겸사겸사.. .. 2022. 8. 11.
ELK - POSTGRES to LOGSTASH postgres 데이터를 logstash를 이용해 elasticsearch에 저장하는 방법은 여기에 있지만, 그 후에 더 추가해서 사용한 방법이 있어 따로 정리해보았다. 우선, 아래와 같은 conf 파일을 logstash에서 기본적으로 사용한다고 가정한다. # cd logstash/pipeline # vi {이름}.conf input { jdbc { jdbc_connection_string => "jdbc:postgresql://{IP}:{PORT}/{DATABASE}" jdbc_user => "{USER}" jdbc_password => "{PASSWORD}" jdbc_driver_class => "org.postgresql.Driver" jdbc_driver_library => "/usr/share/.. 2022. 8. 11.
Spring 에러 발생 시, Slack 알람 만들기 지금 진행하고 있는 프로젝트 중 환자의 유전자 데이터를 분석하여 관련 데이터를 제공하는 기능이 있다. 사용자 요청이 들어오면, 분석 서버로 분석을 요청하고, 그 후 작업은 비동기로 처리하고 있는데, 서버로 올렸을 경우 에러가 언제 발생했는지 모르고 그냥 지나치는 경우가 종종 있었다! 이것 말고도, 사용자가 사용했을 때, 예상하지 못했던 에러가 발생했어도 모르고 지나가는 일도 있었고.. 무튼, 여러모로 에러가 발생하면 알림오면 좋겠다고 생각을 했었다. 2가지 방법으로 테스트를 했었고, 이에대한 기록을 남기고자한다! 1.​ logback-slack-appender Spring에 관련 기능이 있을까 하여 검색해보니 가장 대표적으로 사용하는 것이 logback-slack-appender 라이브러리 였다. log.. 2022. 8. 11.
반응형