본문 바로가기
728x90
반응형
SMALL

spring36

패스워드 암호화 마지마긍로 패스워드를 암호화 해보겠습니다. 패스워드 암호화 부분은 스프링 시큐리티가 제공하는 BCryptPasswordEncoder의 사용을 위해 구현을 잠시 미뤄뒀었습니다. 우리가 UserController와 UserService 를 구현할 당시에는 스프링 시큐리티 디펜던시를 설정하지 않았었기 때문입니다. 이제 Userservice를 수정해줍니다. 기존의 getByCredentials 매서드를 수정해주어야합니다. public UserEntity getByCredentials(final String email, final String password, final PasswordEncoder passwordEncoder) { final UserEntity originalUser = userRepositor.. 2021. 12. 13.
회원정보 찾기 스프링부트를 자습하면서 궁금한게 생겼었습니다!! 바로 간단한 정보로 기존에 저장되어있는 정보를 가지고 올순 없을까? 물론 가능합니다.!! 그러나 이걸 책이나 강의없이 구현할 수 있느냐, 얼마나 고민을 할수있느냐에 따라 내 기술이 되거나, 복붙러가 되거나 갈라진다고 생각이들었습니다..ㅠㅠㅠ 우선 계획을 세웠습니다. 이메일과 유저이름(패스워드의 경우 반대로)으로 회원정보를 몽땅 가져오자 SQL(리파지토리 단계)은 찾는다, 아이디와 유저이름을 통해 겟방식으로? 포스트방식으로? : 포스트방식으로 호출 입력값들을 UserDTO로 저장해서 처리된것도 UserDTO에 셋팅해서 간단하게 세웠습니다. package com.unoSpringBoot.study.persistence; import org.springframe.. 2021. 12. 10.
서비스 개발(4) - 삭제기능 Todo를 삭제하는 기능을 구현하고자합니당 퍼시스턴스 구현 TodoRepository를 사용한다. 업데이트를 위해 delete(), findByUserId()메서드를 사용한다. 서비스 구현 Delete기능의 구현을 위해 delete메서드를 작성하겠습니다! TodoService클래스에 해당 메서드를 추가해줍시다 public List deleteTodo(final TodoEntity entity) { Validate.checkValidate(entity); try { //엔티티를 삭제한다. todoRepository.delete(entity); } catch (Exception e) { //예외가 발생했을때 아이디와 예외를 로깅한다. log.error("에러발생!!엔티티 삭제할떄 오류가 발생..", enti.. 2021. 11. 28.
스프링부트 한글오류 스프링부트 공부하는 도중 한글을 파라미터로 넘겼을때 한글이 깨지는 현상이 일어났다. 해결해보자 .아마도 스프링부트의 UTF가 설정이 안되어있는것이다. 일반적인 스프링웹에서는 톰캣쪽 서버를 만지작거렸는데 이번엔 다르니 포스팅을 남겼다. 다음에 이런 실수나 문제가 발생하면 당황하지맙시당> 2021. 11. 23.
백엔드 서비스 아키텍처 말은 거창하게 서비스 아키텍처라고 사용하였다. Model/Entitt와 DTO클래스 Controller, Service, Persistence 클래스 테스팅용 REST API 에 대해 실습을 하면서 설명은 설명을 위주로하는 카테고리에서 하도록 하겠다. 오 프로젝트에서는 모델과 엔티티를 한 클래스에 구현한다. 따라서 모델은 비즈니스 데이터를 담는 역할과 데이터베이스의 테이블과 스키마를 표현하는 두 역할을 한다. 큰 애플리 케이션의 경우 모델과 엔티티를 따로 구현하지만 우리는 규모가 작으므로 합쳐서 구현하는 것이다. 이 모델/엔티티의 이름은 TodoEntity이고, Todo리스트의 한 아이템에 해당한다. TodoEntity를 작성하기에 앞서 model 패키지 com.unoSpringBoot.study.mod.. 2021. 11. 22.
1. 백엔드 개발 환경설정 이번 글의 핵심은 1. 스프링 부트 프로젝트 설정 2. 빌드 자동화 툴을 이용한 라이브러리 설정 3. 롬복 4. 포스트맨을 이용한 API 테스팅 이렇다. 자바설치 최초 자바를 설치하는 것부터 시작을 하고 이클립스를 설치하는 것까지 해보겠다. 윈도우즈환경에서 개발한다면 윈도우 + r을 눌러 cmd를 실행해주자 그리고 java -version 을 눌러 자바 버전을 확인해 주자 필자는 현재 설치가 되어있어 16.0.1이 나타난다. 설치하지 못한사람들은 이화면이 안뜰것이다. 설치를 해주도록 하자 https://www.oracle.com/java/technologies/downloads/ 해당 사이트에서 다운을 받아보자, 이클립스 설치 https://www.eclipse.org/downloads/ Eclipse .. 2021. 11. 17.
프로젝트(1) 기존 프로젝트에 그동안 공부했던 스프링 시큐리티를 접목하는 작업을 진행하도록 하겠다. 그전에 해당 기능은 -로그인과 회원 가입 페이지의 작성 - 기존 화면과 컨트롤러에 시큐리티 관련 내용 추가 - Ajax부분의 변경 로그인 페이지 처리 기존의 로그인화면은 정말 끔찍하다.. 어쩌면 스프링에서 기본으로 주는화면급이었다. 똑같았다 그냥 그럼 조금 이쁘게 부트스트랩을 적용하고, 아까의 로그인의 화면의 태그라던가 id는 동일하게 설정한뒤 생성해보았다. Please Sign In Remember Me Login 폼태그가 붙고, 거기에 컨테이너 div가 붙고 해서 뭔가 복잡해 보이는데 화면으로보면 크게 달라진것은 없다. 귀찮다면 그전의 화면을 계속사용해도 문제는 없다. 하지만 JSTL이나 스프링 시큐리티의 태그를 사.. 2021. 10. 21.
자동 로그인 현재 웹페이지들은 자동 로그인이나 로그인 기억하기 라는 이름으로 한 번 로그인하면 읠정 시간 동안 다시 로그인을 하지 않아도 되는 기능을 가지고 있다. 스프링 시큐리티의 경우 로그인기억 기능을 메모리상에서나 처리하거나, 데이터베이스를 이용하는 형태로 약간의 설정만으로 구현이 가능하다. security-context.xml에는 태그를 이용해서 기능을 구현할 수 있다.! 해당 태그에는 아래와 같이 여러 속성값을 지정할 수 있다. key 쿠키에 사용되는 값을 암호화하기 위한(key)값 data-source-ref DataSource를 지정하고 테이블을 이용해서 기존 로그인 정보를 기록(옵션) remember-me-cookie 브라우저에 보관되는 쿠키의 이름을 지정한다. 기본값은 remember-me이다. re.. 2021. 10. 21.
커스텀 UserDetailsService JDBC를 이용하는 방식을 DB를 처리해서 편리하게 사용할 수 있기는 하지만, 제한적인 내용만만을 이용한다는 단점이있다. 스프링 시큐리티에서 username이라고 부르는 사용자의 정보만을 이용하기 때문에 충분하지 실제 프로젝트에서 사용자 의 이름이나 이메일등의 자세한 정보를 이용할 경우에는 부족하다. 이런문제를 해결하기 위해서 직접 UserDeatilasService를 구현하는 방식을 이용한다. 흔히 커스텀 UserDetailsService를 구현하는데, 원하는 객체를 인증과 권한 체크에 활용 할 수 있다. 스프링 시큐리티의 UserDetailsService 인터페이스는 단 하나의 메서드만이 존재한다. loadUserByUsername()이라는 메서드의 반환 타입인 UserDetails 역시 인터페이스로.. 2021. 10. 19.
JDBC를 이용하는 간편 인증/ 권한처리 현실적으로 JDBC를 이용하는 방식을 공부해보자 스프링 시큐리티에서는 사용자를 확인하는 인증과 권한 등을 부여하는 인가 과정으로 나누었다. 인증과 권한에 대한 처리는 크게 보면 Authenitacation Manager를 통해서 이루어진다. 이때, 인증이나 권한 정보를 제공하는 존재가 필요하고, 다시 이를 위해서 UserDetailsService라는 인터페이스를 구현한 존재를 활용한다. 유저 상세서비스는 스프링 시큐리티 API내에 이미 CahingUserDeatilsService, InmemoryIserDetailsmanager, jdbcDaoImpl, jdbcUserDetailManager, LdapUserDetailsManager, LdapUserDetailsService와 같은 구현 클래스들을 제공.. 2021. 10. 18.
로그인과 로그아웃처리(2) 커스템 로그인 페이지 앞서 언급했듯이 스프링 시큐리티에서 기본적으로 로그인페이지를 제공하긴한다. 현실적으로 화면 디자인등의 문제로 사용하기 불편하고 안예쁘다. 때문에 거의 대부분 경우 별도의 URI를 이용해서 로그인 페이지를 제작해서 사용한다. 이를 이용하는 방식은 접근 제한 페이지와 유사하게 직접 특정 URI를 지정할 수 있다. 보이는 바와같이 한줄을 수정 추가해주었다. 이제 로그인화면은 customLogin으로 이동하게 될것이다. login-page속성의 Uri는 get방식으로 접근하는 uri로 지정한다. 그리고 CommonController에 /customLogin에 해당하는 매서드를 추가해준다. @GetMapping("/customLogin") public void loginInput(String.. 2021. 10. 18.
로그인과 로그아웃 처리 스프링 시큐리티의 내부 구조는 상당히 복잡하지만, 실제 사용은 약간의 설정만으로도 처리가 가능하다. 앞에서 설계한 몇 개의 URI에 대한 접근 제한을 통해서 간단히 스프링 시큐리티의 적용 방법을 알아보자 접근 제한 설정 security-context.xml에 아래와 같이 접근 제한을 설정한다.; 특정한 URI에 접근할 때 인터셉터를 이용해서 접근을 제한하는 설정은 를 이용한다. pattern이라는 속성과 access라는 속성을 지정해야만 한다. pattern속성은 말 그대로 uri의 패턴을 의미하고, access의 경우는 권한을 체크한다. 이경우 /sample/member라는 uri는 role_member라는 권한이 있는 사용자만이 접근가능하게 된다. access의 속성값으로 사용되는 문자열은 1. 표현.. 2021. 10. 18.
728x90
반응형
LIST