diff --git a/src/main/java/demo/api/config/SecurityConfig.java b/src/main/java/demo/api/config/SecurityConfig.java index edece9c..1031374 100644 --- a/src/main/java/demo/api/config/SecurityConfig.java +++ b/src/main/java/demo/api/config/SecurityConfig.java @@ -37,6 +37,9 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { // web.ignoring().antMatchers("/?/**"); // } + /** + * 인증에 대한 지원 + */ @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder()); diff --git a/src/main/java/demo/api/user/UserController.java b/src/main/java/demo/api/user/UserController.java index a20de9a..396bad7 100644 --- a/src/main/java/demo/api/user/UserController.java +++ b/src/main/java/demo/api/user/UserController.java @@ -7,7 +7,12 @@ import demo.api.user.exception.UserNotFoundException; import java.util.List; import java.util.Optional; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.Authentication; import org.springframework.security.core.annotation.AuthenticationPrincipal; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.annotation.Validated; @@ -15,7 +20,6 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.ResponseBody; /** * User 관련 HTTP 요청 처리 @@ -40,22 +44,24 @@ public class UserController { @GetMapping("/signIn") public String signIn(@RequestParam(value = "fail", required = false) String flag, Model model) { - if(flag == null || !flag.equals("true")) { - model.addAttribute("failed", false); - return "user/signIn"; - } - else { - model.addAttribute("failed", true); - return "user/signIn"; - } + model.addAttribute("failed", flag != null); + + return "user/signIn"; } - +// @Autowired +// private UserDetailsService userDetailsService; @GetMapping("/profile") - public String profile(Model model, @AuthenticationPrincipal User user) { - User userDetail = userService.findByEmail(user.getEmail()) - .orElseThrow(() -> new UserNotFoundException()); + public String profile(Model model, @AuthenticationPrincipal UserDetails userDetails) { +// Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); +// System.out.println("principal : " + authentication.getPrincipal()); +// System.out.println("Implementing class of UserDetails: " + authentication.getPrincipal().getClass()); +// System.out.println("Implementing class of UserDetailsService: " + userDetailsService.getClass()); + if (userDetails != null) { + User userDetail = userService.findByEmail(userDetails.getUsername()) + .orElseThrow(() -> new UserNotFoundException()); - model.addAttribute("userDetail", userDetail); + model.addAttribute("userDetail", userDetail); + } return "user/profile"; } diff --git a/src/main/resources/templates/user/profile.html b/src/main/resources/templates/user/profile.html index c2144a2..3b0f08d 100644 --- a/src/main/resources/templates/user/profile.html +++ b/src/main/resources/templates/user/profile.html @@ -5,16 +5,16 @@
- - - - + + + + - - - - + + + +
#My Profile
#My Profile
diff --git a/src/test/java/demo/api/user/service/UserServiceTest.java b/src/test/java/demo/api/user/service/UserServiceTest.java index 538715d..da05f1c 100644 --- a/src/test/java/demo/api/user/service/UserServiceTest.java +++ b/src/test/java/demo/api/user/service/UserServiceTest.java @@ -18,6 +18,9 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.transaction.annotation.Transactional; @@ -82,7 +85,6 @@ class UserServiceTest { System.out.println("flag = " + flag); // then - } @Test