Spring boot security + jwt
참조 프로젝트 YoutubeCrawl
Security+JWT 흐름방식을 설명하지 않고 바로 복붙해서 쓸수 있도록 하는게 목적
맴버 테이블 이름은 tbl_member
model 은
public class Member {
    private int idx;
    private String username;
    private String password;
    
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date created_at;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date updated_at;
    private List<MemberAuth> authList;
}
public class MemberAuth {
    private long idx;
    private int member_idx;
    private String auth;
    
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date created_at;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date updated_at;
}
이 2개를 기본으로 가지고 감
com.jong *Application.java
@MapperScan(basePackages = "com.jong.mapper")
public class DevProject1Application {
    public static void main(String[] args) {
        SpringApplication.run(DevProject1Application.class, args);
    }
} 
mapper || repository 패키지 경로를 적어줘야함
안그럼 mybatis가 작동을 안함
--------------------환경설정----------------------
com.jong.common.exeption
ApiErrorInfo.java
com.jong.common.security
CustomAccessDeniedHandler.java
CustomUserDetailsService.java
        @Log
        public class CustomUserDetailsService implements UserDetailsService {
    
        @Autowired
        private MemberMapper memberMapper;
        @Override
        public UserDetails loadUserByUsername(String username) throws                 UsernameNotFoundException {
        log.info("Load User By UserName : " + username);
        Member member = memberMapper.getMemberByUsername(username);
        log.info("queried by member mapper: " + member);
        return member == null ? null : new CustomUser(member);
        } 
    } 
//저 부분을 mybatis 에서 member를 불러오는 쿼리 부분 interface와 연결 시켜줘야함
//쿼리에는 단순 username 으로 멤버 데이터와 서브테이블을 mybatis 형식으로
//join해서 가져오는데, password 비교는 안함
com.jong.common.security.domain
CustomUser.java
com.jong.common.util
AuthUtil.java
com.jong.config
    SecurityConfig.java
com.jong.constants
SecurityConstants.java
com.jong.filter
JwtAuthenticationFilter.java
JwtAuthorizationFilter.java
컨트롤러에 @PreAuthorize("hasAnyRole('ROLE_MEMBER')")
붙여주면 로그인 했는지, 권한 있는지 다 검사해줌
참고로 DB 셋팅, Mapper 셋팅은 username으로 검색해서 가져오도록 짜야함
댓글
댓글 쓰기