전체 글

새롭게 알게된 것, 코딩정보 등 하루하루 써가는 공부 메모장입니다.
오늘은 NewsFeedProject User정보 수정기능을 만들었다. 패스워드를 변경할 때, 비밀번호를 입력받아서 맞는지 확인하고 비밀번호를 변경해준다. 그리고 패스워드를 인코딩 해서 비교하고 등록해줘야한다. ★패스워드 암호화★ @Configuration public class PasswordConfig { @Bean public PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } } 패스워드 암호화를 위해선 Encoder가 필요한데 Encoder는 위와같이 먼저 config를 이용해 설정해둔다. private final PasswordEncoder passwordEncoder; //Bean으로 동록된 passwordEnco..
점점 공부가 힘들어 진다 ... 난이도가 올라간ㄷ... 배울게 많아진다... 7주차에 배운건 디버그하는 법 일단 디버그하는 법은 에러가 난것같은 코드 옆에 빨간 디버그포인트를 찍고 실행시키고 요청을 보내면 그 부분에서 멈춘다. 여기서 좋았던 점은 해당 부분에서 변수에 어떤값들이 전달되었는지 다 확인 할 수 있다. 디버그 도중에도 디버그포인트를 새로찍으며 디버그진행이 가능하기 때문에 매우 유용했다. Pattern(정규 표현식 사용법) 정규 표현식은 해당 필드에 들어오는 값에 제한을 걸 수 있는 에너테이션인데 @Valid를 함께 사용한다. 사이즈를 위 주석과같이도 제한할 수 있고 아래와같이 문자열제한과 같이 제한해줄 수 있다. ^ : 시작 $ : 끝 위와같이 값을 받아올 때 @Valid를 사용한다. Prin..
오늘은 팀원들과 의논해서 팀프로젝트 구현에 앞서 프로젝트 설계를 했다. 팀원들 말을 들어보니 나만 이번 심화주차 내용들을 다 이해 못한게 아니라서 다행이었다는... 그래서 다음주에 개발해볼 설계 내용이다. ERD ERD를 그려주신건 슬기님... 아이패드 갓.. 와이어프레임도 완성했다. 와이어 프레임 여기서도 수고해주신 슬기님과 아이패드... API명세 기능 Method URL RequestHeader Request Response ResponseHeader 회원가입 POST /api/user/signup { ”username” : “leee”, ”password” : “1234”, ”profilename” : “seung”, ”introduce” : “안녕하세요” } { "msg": "회원가입 성공", ..
UseCase 제출하면서 작성해둔 UseCase를 Readme에 올려서 UseCase만드는 법이다. https://app.creately.com/d/BycqDgSWjc8/edit 난 usecase를 해당 사이트에서 만들었다. System System은 해당 사각형 모양인데 만들 시스템의 명칭을 쓴다. 내부에 기능들이 들어간다. 액터(Actor) 액터는 해당사용자 즉 유저를 의미하며 졸라맨(?)모양으로 나타내고 기능들을 실선으로 연결한다. UseCase usecase는 타원형으로 기능을 입력하고 실선으로 액터와 이어준다. include(포함관계) 해당 점선은 기능이 화살표가 향하는 기능이 필요할 때 사용한다. expend(확장관계) 해당 기능은 기능에 특정 조건에따라 추가 기능이 수행될 때 확장을 사용한다..
권한설정 애너테이션 @Secured(Athority값) : 이 애너테이션을 위에 붙여주면 해당 값을 가진 사용자만 들어올 수 있도록 제한함. pattern 정규 표현식 @Pattern(regexp = "^[a-z0-9]$") 애너테이션을 이용해 위와같이 표현하는데, 위는 영어소문자,숫자로 제한한다는 의미이다. 그 외에도 (?i) 앞 부분에 (?i) 라는 옵션을 넣어주면 대소문자를 구분하지 않음 같은 부분도 존재한다. 로그인한 사용자 정보 가져오기 1.Bean을 통해 가져오기 security context holder를통해 가져온다. Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal(); UserDet..
문제점 오늘은 SpringSecurity를 이용해 JWT를 이용한 로그인을 구현하던 중 200번으로 정상 실행이 되는데 로그인이 작동 되지 않고 JWT가 만료되었다는 에러가 발생했다. 분명 코드상으로는 로그인을하며 JWT를 생성해서 쿠키에 넣어주고, UserDetails를 Implement받은 객체에서도 토큰 만료기간이 없도록 설정 해주고 있기때문에, 에러가 발생하는 것이 이해되지 않았다. 시도해본 것 다른 DB상 아이디로 로그인 해보았다. 혹시 JWT가 바뀔까 싶어서 - 하지만 실패 같은 에러가 발생했다. 새로운 아이디를 회원가입 기능으로 가입해서 로그인 해보기 - 회원가입 기능도 200번으로 정상동작하지만 기능이 수행되진 않는 문제가 발생 튜터님에게 물어보고 라인에 걸어두고 디버그를 실행 해결 알고..
이번주차에선 강의만 주구장창 들어서 많은 문제점은 없었다 새롭게 배운 내용을 토대로 공부했다. Spring에는 SpringSecurity라고하는 하위 프레임워크가 존재한다. 애플리케이션의 보안(인증,인가)를 담당하는데 많은 종류 의 필터를 이용해서 내부 구조를 몰라도 간단하게 보안적인 이점을 챙길 수 있다. 필터들의 종류는 다음과 같으며 해당 필터들이 순차적으로 호출되는데 우리가 원하는 인증인가 작업을 해당 필터들 사이에 넣어서 진행할 수 있다. SpringSecurity Filter 종류 SecurityContextPersistenceFilter : SecurittyContextRepository에서 SecurityContext(접근 주체와 인증에 대한 정보를 담고 있는 객체)를 가져오거나 저장하는 역..
Security 알아야할 4가지 처리 흐름 WebSecurityConfig 요청접근허가 , 로그인 사용여부(UserPasswordAthenticationFilter사용) UserDetailsServiceImpl UserDetailsImpl AuthenticationPrincipal /** * 1. 인증설정 (WebSecurityConfig.java) * WebSecurityConfig > http.formLogin() > UsernamePasswordAuthenticationFilter > SecurityFilterChain > 요청별 인증수행 * 2. 인증정보 받아오기 & 인증객체에 넣기 (UserDetailsServiceImpl.java) * UsernamePasswordAuthenticationFi..
나모_
코드가 있는 곳