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