<aside> 1️⃣ Principal이란?
</aside>
Principal 클래스는 스프링 시큐리티에서 중요한 역할을 하는 클래스로, 현재 사용자의 보안 관련 세부 정보를 담고 있다.Principal 클래스는 UserDetails 인터페이스를 구현하고 있다.UserDetails**는 스프링 시큐리티에서 사용자의 정보를 담는 인터페이스로, 사용자의 이름, 패스워드, 권한 정보 등을 반환하는 메소드를 정의하고 있다. 이를 구현한 Principal 클래스는 이러한 사용자 정보를 실제로 가지고 있게 된다.Principal 클래스의 필드로는 userId, username, password, email, roleType 등이 있다. 이들은 사용자의 아이디, 이름, 패스워드, 이메일, 권한 타입 등을 나타낸다.Principal 클래스에는 UserDetails 인터페이스의 메소드들이 구현되어 있다. 이 메소드들은 스프링 시큐리티에서 사용자의 정보를 가져오는 데 사용된다.getUsername() 메소드는 사용자의 이름을 반환하고, getPassword() 메소드는 사용자의 패스워드를 반환한다.Principal 클래스에는 **of**와 **from**이라는 팩토리 메소드가 있다. of 메소드는 Principal 객체를 생성하는 데 사용되며, from 메소드는 UsersDto 객체를 Principal 객체로 변환하는 데 사용된다.Principal 클래스는 스프링 시큐리티에서 사용자의 보안 관련 정보를 관리하고, 이 정보를 바탕으로 인증과 권한 확인 등의 작업을 수행하는 데 필요한 클래스이다.