일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 리눅스
- 스프링부트핵심가이드
- 친절한SQL튜닝
- 자바편
- 알파회계
- 선형대수
- resttemplate
- Kernighan의 C언어 프로그래밍
- 서버설정
- 처음 만나는 AI 수학 with Python
- 티스토리 쿠키 삭제
- iterator
- 처음 만나는 AI수학 with Python
- 스프링 시큐리티
- 자료구조와 함께 배우는 알고리즘 입문
- 코드로배우는스프링부트웹프로젝트
- 데비안
- 네트워크 설정
- network configuration
- 이터레이터
- GIT
- baeldung
- 코드로배우는스프링웹프로젝트
- 목록처리
- 자료구조와함께배우는알고리즘입문
- 페이징
- 구멍가게코딩단
- /etc/network/interfaces
- ㅒ
- d
- Today
- Total
목록분류 전체보기 (406)
bright jazz music
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/J6dp0/btrNcliMhaj/kFewZ6SnblBzpPkD9IVXa1/img.png)
두 개 이상의 엔티티 간의 연관 관계를 맺고 나면, 엔티티 클래스들이 실제 DB 상에서는 두 개 혹은 두 개 이상의 테이블로 생성된다. 따라서 연관관계를 맺고 있다는 것은 DB의 입장에서는 조인이 필요하다는 뜻이 된다. 실제로 @ManyToOne의 경우 FK 쪽의 엔티티를 가져올 때 PK 쪽의 엔티티도 함께 가져온다. 1. BoardRepositoryTests를 통해 Member를 @ManyToOne으로 참조하고 있는 Board를 조회하는 테스트 코드 작성 //BoardRepositoryTests.java package com.example.bootboard.repository; import com.example.bootboard.entity.Board; import com.example.bootboar..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/12eTa/btrMlWddoL4/KKQtpA1kXLhgD6mTltK1t1/img.png)
연관관계 테스트 현재 3개의 테이블이 PK와 FK의 관계로 이루어져 있다. 따라서 테스트를 위한 데이터를 추가하는 작업도 PK 쪽에서부터 시작하는 것이 좋다. 테스트를 위해 프로젝트 내 test 폴더에 repository 폴더를 생성한다. 그 안에 각 엔티티 클래스를 다루는 아래의 클래스를 생성한다. MemberRepositoryTests, BoardRepositoryTests, ReplyRepositoryTests 테스트 데이터 추가하기 MemberRepositoryTests.java MemberRepository를 주입하고 예제로 사용할 Member객체를 100개 추가한다. package com.example.bootboard.repository; import com.example.bootboard...
상태 패턴은 특정 상태에 따라 행동이 달라지는 객체를 위한 패턴. 쉽게는 리모콘이 예다. 티비의 상태에 따라(켜/꺼)에 따라 버튼이 작동이 다르다. - 켜: 채널 - 꺼: 채널 블로그도 마찬가지, 비공개 상태( 드래프트 상태)일 때의 포스팅은 클릭할 수도 없고 URL을 입력한다고 접근할 수 없다. 공개가 되면 다른 사람들이 와서 댓글/조항요도 누를 수 있다. --> 상태 변경에 따라 특정 오브젝트들의 행동이 바뀌는데, 이를 스테이트 패턴으로 정리할 수 있다. ---------------------------- 전략패턴과 상태패턴은 쌍둥이다. - 전략패턴은 바꿔 쓸 수 있는 알고리즘을 사용한다. - 상태패턴은 내부 상태를 바꿈으로써 객체가 행동을 바꿀 수 있도록 한다. 예를 들어 동전 뽑기 기계 두 가지 ..
진행 중 SecurityConfig.java //SecurityConfig.java package com.example.common; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.builders.WebSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cPrlWP/btrLZRw6MAf/L8hUtk4REBDviUXiisKtAK/img.png)
http.logout() : 로그아웃 기능 작동 logoutUrl("/logout") : 로그아웃 처리 되는 URL 입력 logoutSuccessUrl("/login") : 로그아웃 성공 후 이동할 페이지. 예문에서는 로그아웃 후 /login으로 이동한다. deleteCookies("JSESSIONID", "remember-me") : 로그아웃 후 쿠키 삭제, remember-me는 로그아웃 후에도 로그인 없이 접근 가능하도록 하는 쿠키 addLogoutHandler(logoutHandler()) : 로그아웃 됐을 떄 스프링 시큐리티가 기본적으로 제공하는 로그아웃 구현체가 있다. 그 구현체에서 실제로 세션을 무효화하고 인증 토큰을 삭제하는 등의 처리를 한다. 그러한 기본적인 처리 외에 추가적인 처리를 하..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/4zwBA/btrLK0t98XA/hE6EvzRB39sATdk7f6hUP0/img.png)
usernamePasswordAuthenticationFilter : 로그인 폼 인증 처리. formLogin()과 그 하위 API들을 설정하면 인증처리가 초기화 되면서 로그인 인증처리가 작동할 수 있도록 시큐리티가 구성작업을 한다. 실제 사용자가 로그인을 하게 되면 인증처리를 담당하고 그 요청을 처리하는 필터가 이 필터이다. 이 필터가 내부적으로, 각 인증처리 역할에 따라서 여러 클래스를 활용하여 인증 처리를 하게 된다. 인증처리 과정 - 사용자 요청 - 필터가 그 요청을 받는다. - AntPathRequestMatcher() 메서드를 사용해서 요청 정보가 매칭되는지 확인. 기본값을 /login. loginProcessingUrl() 이 값이 변경되면 그에 맞게 AntPathRequestMatcher(..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/rhwhu/btrLOghTWfP/uEo6Fn6j31KEwbsnwKQkEk/img.png)
1. Form 로그인 절차 설명 1. 접근 시도 2. Form 리다이렉트 3. POST[ id + pw] 인증처리- 계정 정보가 맞는 경우 스프링 시큐리티가 세션 생성 객체 생성- 세션에 최종 성공한 인증결과를 담은 인증 토큰 객체(Authetication 클래스)를 시큐리티 컨텍스트에 생성. 저장 - 이 시큐리트 컨텍스트를 세션에 저장한다. 4. 클라이언트가 다시 접근을 시도하면, 스프링 시큐리티는 사용자가 가진 세션으로부터 토큰 존재 여부판단. 그 토큰으로 계속 접근. 스프링 시큐리티는 토큰에 기반해 인증 유지/ 2. 폼 로그인 인증 방식에서 사용하는 API 설명 http.formLogin()을 적어주면 폼 로그인 인증 기능이 작동 loginPage() : 경로를 적어주면 사용자 정의 로그인 페이지 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bb0ii8/btrLLBmoDjh/b4NcfBWB11f5rlKFkGNpY1/img.png)
WebSecurityConfigurerAdapter : 스프링 시큐리티의 웹 보안 기능을 초기화 하고 설정하는 핵심 클래스이다. 의존성 추가하고 스프링 시큐리티가 초기화 보안 기능을 활성화 하고 보안 기능을 설정하는 클래스가 이 클래스이다. 여기서 HttpSecurity 클래스를 생성하고, 이 클래스가 세부적인 보안 설정을 가능케 하는 API를 제공한다. SecurityConfig 클래스 생성 - WebSecurityConfigurerAdapter 상속 - 내부에서 HttpSecurity 클래스 생성 스프링 시큐리티가 추가된 상태에서 서버를 기동하면 WebSecurityConfigurerAdapter 클래스가 작동한다. HttpSecurity 객체를 생성하고 그 것을 사용해서 대략 11개 정도의 API들..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dxxELu/btrLKKdgyr7/B0cRdOvi8K7gRoq49AzWv0/img.png)
1.1. 프로젝트 구성 1.2. 테스트를 위한 컨트롤러 생성(SecurityController.java) package io.security.basicsecurity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class SecurityController { @GetMapping("/") public String index(){ return "home"; } } 1.3. main 메서드 실행 브라우저를 열고 아래의 주소 입력 http://localhost:8080 ==> 아직 스프링 시큐리티..
정적 팩터리와 생성자에 모두 존재하는 제약: 매개변수가 많을 때 적절히 대응하기 어렵다. 대응 패턴 1. 점층적 생성자 패턴 2. 자바 빈즈 패턴 3. 빌더 패턴 1. 점층적 생성자 패턴(telescoping constructor pattern) - 과거에는 점층적 생성자 패턴을 흔히 사용했다. 매개변수를 적게 가지는 생성자부터 많이 가지는 생성자까지 여러 개의 생성자를 만드는 것이다. - 자신이 원하는 파라미터 조합을 가진 파라미터가 없을 경우, 각각 다른 생성자를 조합하여 객체를 만들거나 아니면 애초에 많은 파라미터를 가진 생성자를 사용해야 했다. 이 때 필요 없는 값에도 아규먼트를 넘겨줘야 했다. - 매개변수가 많아지면 이 패턴은 사용하기 어려워 진다. 코드를 작성하거나 읽기 어려울 뿐만 아니라, ..