728x90 반응형 SMALL 스프링16 스프링시큐리티) There is no PasswordEncoder mapped for the id "null" 500 오류 사이드 프로젝트 진행중 오류를 겪었다. 사진과 같다. 이는 현재 기존 프로젝트에서 스프링시큐리티를 적용하는 과정중에 발생한 것이다. 지금 현재 저의 sercurity-context.xml 은 이렇습니다.(저는 스프링시큐리티를 따로 xml로 만들어 사용합니다.) 위 코드처럼 패스워드가 그냥 선언되어있으면 발생하는 오류이다. 만일 여러웁늬 스프링 시큐리티 버전이 5버전 이상이라면 PasswordEncoder라는 존재를 이용해야합니다. '{noop}' 을 붙여주어야한다. 붙여주고 실행을 해보도록하겠습니다. 로그인을 해주었더니 되었다. 2022. 1. 13. 패스워드 암호화 마지마긍로 패스워드를 암호화 해보겠습니다. 패스워드 암호화 부분은 스프링 시큐리티가 제공하는 BCryptPasswordEncoder의 사용을 위해 구현을 잠시 미뤄뒀었습니다. 우리가 UserController와 UserService 를 구현할 당시에는 스프링 시큐리티 디펜던시를 설정하지 않았었기 때문입니다. 이제 Userservice를 수정해줍니다. 기존의 getByCredentials 매서드를 수정해주어야합니다. public UserEntity getByCredentials(final String email, final String password, final PasswordEncoder passwordEncoder) { final UserEntity originalUser = userRepositor.. 2021. 12. 13. TodoController에서 인증된 사용자 사용하기 지난 글들을 작성할때 , Todo 리스트에 대한 CRUD 기능을 구현할때 고정적인 아이디를 사용했습니다! 이땐 로그인 기능이 구현되지 않았어서 고정적으로 사용했었습니다. 그리고 이 기능을 아직도 사용하고있었습니다. 이제 이 메서드들이 인증된 사용자 아이디를 사용할 수 있도록 각 메서드에 userid라는 매개변수를 추가해줍시다! 우선 최초 url 매핑을 담당하는 SO부분을 수정시켜줍시다. @AuthenticationPrincipal String userId 해당 어노테이션을 이용해서 로그인되어있는 권한을 가져오는겁니다. 그리고 컨트롤러 오브젝트 단에서도 아이디를 매개변수로 받아서 해당 아이디로 셋팅하게됩니다. 그런데말입니다... userId는 도대체 누가 어떻게 String 인것을 알고 넘겨주는 걸까요? .. 2021. 12. 12. JSON 웹 토큰 서버에서 전자 서명된 토큰을 이용하면 인즈엥 따른 스케일 문제를 해결할 수 가 있습니다! 우리는 전자 서명된 토큰을 이용해 스케일 문제를 해결합니다.ㅎㅎ 그리고 이렇게 전자 서명된 토큰 중 하나가 JSON 웹 토큰 입니다. 이것이 JWT라고 합니다. JWT는 오픈 스탠더드이고, JSON 형태로 된 토큰입니다. 토큰은 {header}.{payload}.{signature} 로 구성되어 있습니다. 각 파트의 필드가 무엇을 뜻할까요? Header typ : Type을 줄인 말로 토큰의 타입을 의미 alg : Algorith을 줄인 말로 토큰의 서명을 발행하는데 사용된 해시 알고리듬의 종류를 의미 Payload sub : Subject 를 줄인 말로 토큰의 주인을 의미, 애플리케이션에서는 사용자의 이메일이나 아.. 2021. 12. 11. 회원정보 찾기 스프링부트를 자습하면서 궁금한게 생겼었습니다!! 바로 간단한 정보로 기존에 저장되어있는 정보를 가지고 올순 없을까? 물론 가능합니다.!! 그러나 이걸 책이나 강의없이 구현할 수 있느냐, 얼마나 고민을 할수있느냐에 따라 내 기술이 되거나, 복붙러가 되거나 갈라진다고 생각이들었습니다..ㅠㅠㅠ 우선 계획을 세웠습니다. 이메일과 유저이름(패스워드의 경우 반대로)으로 회원정보를 몽땅 가져오자 SQL(리파지토리 단계)은 찾는다, 아이디와 유저이름을 통해 겟방식으로? 포스트방식으로? : 포스트방식으로 호출 입력값들을 UserDTO로 저장해서 처리된것도 UserDTO에 셋팅해서 간단하게 세웠습니다. package com.unoSpringBoot.study.persistence; import org.springframe.. 2021. 12. 10. REST security를 구현해보자! 당분간 User 레이어를 구현할것입니다!!! UserEntity 를 구현한다. UserRepository 구현 UserService 구현 UserDTO/UserController 구현 사용자는 id, username, email, password로 로그인을하고 구성되어있습니다.! 그래서 해당 정보들이 들어가는 Entity를 구현해봅시다 package com.unoSpringBoot.study.model; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import org.hibernate.annotations.G.. 2021. 12. 2. 서비스 개발(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. 서비스 레이어 : 비즈니스 로직 서비스 레이어는 컨트롤러와 퍼시스턴스 사이에서 비즈니스 로직을 수행하는 역할을 한다. 서비스 레이어는 HTTP와 긴밀히 연관된 컨트롤러에서 분리되어 있고, 또느 데이터 베이스와 긴밀히 연관된 퍼시스턴스와도 분리되어 있다. 따라서 서비스 레이어에서는 우리가 개발하고자 하는 로직에 집중할 수 있다. TOdo 프로젝트를 위한 비즈니스 로직 구현을 위해 service페키지를 생성하고 그 아래에 TodoService를 만들어보자 package com.unoSpringBoot.study.service; import org.springframework.stereotype.Service; @Service public class TodoService { public String testService() { return .. 2021. 11. 24. 매개변수를 넘겨받는 방법 실습을 진행할것이지만 앞으로 매개변수를 넘겨받는 방법에 대해 실습을 통해 알아보고 앞으로 어떻게 적용할지를 위해서 하루는 따로 정리해서 매개변수를 넘겨받는 방법에 대해 공부하려고한다. /test 방식이 아닌 /test/{id} 등으로 URI의 경로로 넘어오는 값을 변수로 받을수있다. @GetMapping("/{id}") public String testControllerWithPathVariables(@PathVariable(required = false) int id) { return "Hello wolrd!! ID = " + id; } 를 입력하고, 포스트맨으로 실행해보자 한글이 깨지고 오류가 발생했다. 여기서 해결하자 2021.11.23 - 스프링부트 한글오류 스프링부트 한글오류 스프링부트 공부하는.. 2021. 11. 23. 백엔드 서비스 아키텍처 말은 거창하게 서비스 아키텍처라고 사용하였다. Model/Entitt와 DTO클래스 Controller, Service, Persistence 클래스 테스팅용 REST API 에 대해 실습을 하면서 설명은 설명을 위주로하는 카테고리에서 하도록 하겠다. 오 프로젝트에서는 모델과 엔티티를 한 클래스에 구현한다. 따라서 모델은 비즈니스 데이터를 담는 역할과 데이터베이스의 테이블과 스키마를 표현하는 두 역할을 한다. 큰 애플리 케이션의 경우 모델과 엔티티를 따로 구현하지만 우리는 규모가 작으므로 합쳐서 구현하는 것이다. 이 모델/엔티티의 이름은 TodoEntity이고, Todo리스트의 한 아이템에 해당한다. TodoEntity를 작성하기에 앞서 model 패키지 com.unoSpringBoot.study.mod.. 2021. 11. 22. 프로젝트(2) AJax와 스프링 시큐리티 처리 태그를 이용하는 방식 외에 많이 사용되는 Ajax를 이용하는 경우 약간의 추가적인 설정이 필요하다. 해당 Ajax부분을 로그인한 사용자만이 해당 기능들을 사용할 수 있도록 수정해주어야 한다. 스프링 시큐리티가 적용되면 POST, PUT, PATCH, DELETE와 같은 방식으로 데이터를 전송하는 경우 추가적으로 X-CSRF-TOKEN와 같은 헤더 정보를 추가해서 CSRF토큰값을 전달하도록 수정해야한다. Ajax는 JS를 이용하기 때문에 브라우저에서는 CSRF토큰과 관련된 값을 변수로 선언하고, 전송 시 포함 시켜주는 방식으로 수정하자. 게시물등록 시 첨부파일의 처리 스프링 시큐리티가 적용된 후에는 게시물에 파일첨부가 정상적으로 동작하지 않는다. 게시물의 등록이 POST로 .. 2021. 10. 21. 스프링 시큐리티와 JSP JSP에서 로그인한 사용자 정보를 보여주기 /sampl/admin 과 같은 경로는 로그인한 사용자만이 접근할 수 있고, 만일 권한이 적당하지 않으면 볼수 없는 페이지이므로 로그인한 사용자가 접근 했을 때에는 해당 사용자의 여러 정보를 보여줄 필요가 있다. 스프링 시큐리티와 관련된 정보를 출력하거나 사용하려면 JSP상단에 스프링 시큐리티 관련 태그 라이브러리 사용을 선언하고, 태그와 principal이 라는 이름의 속성을 사용한다. 지금현재 있는 JSP파일에 해당 태그를 추가한다. 그리고 해당 사용자의 이름과 아이디, 권한들을 나타날 수 있도록 하기위해 각각의 태그들을 넣어주어 불러온 정보를 화면단에 나타나게 해줄 수 있다. /sample/admin page principal : MemberVO : 사용자.. 2021. 10. 19. 이전 1 2 다음 728x90 반응형 LIST