10. SpringSecurity 인증 후 로그인 객체는 어떻게?
SpringBoot 에서 Security 인증 후에 우리는 어떻게 로그인 한 객체의 정보를 받아올 수 있을까?
Bean을 통해 사용자 정보를 가져온다.
Controller 에서 사용자 정보를 얻는다.
@Authentication Principal 을 사용한다.
설명은 하지만 본인이 실제로 해본 작업은 2번이다. 2번에 대해서는 작업한 내용을 보면서 설명한다.
1. Bean을 통해 가져오기
SecurityContextHolder를 통해 가져오는 방법이다.
Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
UserDetails userDetails = (UserDetails)principal;
String username = principal.getUsername();
String password = principal.getPassword();
2. Controller 에서 사용자 정보를 얻는다.
Principal 객체에 접근해 정보를 가져온다.
@Controller
public class SecurityController {
@GetMapping("/username")
@ResponseBody
public String currentUserName(Principal principal) {
return principal.getName();
}
}
본인의 경우 다음처럼 활용을 했었다. Authentication을 통해서 현재 로그인한 사용자의 id를 통해 DB에서 사용자 내역을 받아오게 했다.
public int addActivity(@RequestParam("name") String name,Activity activity,Hash hash,Authentication authentication) {
//현재 로그인한 유저의 정보를 받아옵니다.
UserDetails userDetails = (UserDetails) authentication.getPrincipal();
Member m = memRepo.findOneByMid(userDetails.getUsername());
List<Activity> activityList = m.getActivities();
JDBC Authorization을 사용했을 때, 아래와 같이 userDetails 정보를 받아왔음.
org.springframework.security.core.userdetails.User@5b2ffc6:
Username: djunnni;
Password: [PROTECTED];
Enabled: true;
AccountNonExpired: true;
credentialsNonExpired: true;
AccountNonLocked: true;
Granted Authorities: ROLE_MEMBER
3. @Authentication Principal 을 사용한다.
이에 대해서는 [Spring Security] 현재 로그인한 사용자 정보 가져오기를 참고하길 바란다.
Last updated
Was this helpful?