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으로 검색해서 가져오도록 짜야함


댓글

이 블로그의 인기 게시물

[ref game]

[AI Image]