Skip to content

Commit 8fa9670

Browse files
authored
Merge pull request #6 from GSM-Template/fix/user-details-principal
security user details principal을 userId로 변경
2 parents 9f14bf2 + 9ba7e1a commit 8fa9670

File tree

8 files changed

+23
-31
lines changed

8 files changed

+23
-31
lines changed

src/main/java/gsm/gsmjava/domain/auth/service/ReissueTokenService.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
import org.springframework.stereotype.Service;
1313
import org.springframework.transaction.annotation.Transactional;
1414

15+
import static gsm.gsmjava.global.filter.JwtReqFilter.BEARER_PREFIX;
16+
1517
@Service
1618
@RequiredArgsConstructor
1719
public class ReissueTokenService {
@@ -21,8 +23,6 @@ public class ReissueTokenService {
2123
private final UserRepository userRepository;
2224
private final RefreshTokenRepository refreshTokenRepository;
2325

24-
private final String BEARER_PREFIX = "Bearer ";
25-
2626
@Transactional
2727
public TokenDto execute(String token) {
2828
isNotNullRefreshToken(token);
@@ -31,10 +31,10 @@ public TokenDto execute(String token) {
3131
RefreshToken refreshToken = refreshTokenRepository.findByToken(removePrefixToken)
3232
.orElseThrow(() -> new GlobalException("존재하지 않는 refresh token 입니다.", HttpStatus.NOT_FOUND));
3333

34-
String email = tokenGenerator.getEmailFromRefreshToken(refreshToken.getToken());
35-
isExistsUser(email);
34+
String userId = tokenGenerator.getUserIdFromRefreshToken(refreshToken.getToken());
35+
isExistsUser(userId);
3636

37-
TokenDto tokenDto = tokenGenerator.generateToken(email);
37+
TokenDto tokenDto = tokenGenerator.generateToken(userId);
3838
saveNewRefreshToken(tokenDto.getRefreshToken(), refreshToken.getUserId());
3939
return tokenDto;
4040
}
@@ -44,8 +44,8 @@ private void isNotNullRefreshToken(String token) {
4444
throw new GlobalException("refresh token을 요청 헤더에 포함시켜 주세요.", HttpStatus.BAD_REQUEST);
4545
}
4646

47-
private void isExistsUser(String email) {
48-
if (!userRepository.existsByEmail(email))
47+
private void isExistsUser(String userId) {
48+
if (!userRepository.existsById(Long.valueOf(userId)))
4949
throw new GlobalException("유저를 찾을 수 없습니다.", HttpStatus.NOT_FOUND);
5050
}
5151

src/main/java/gsm/gsmjava/domain/user/repository/UserRepository.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,5 @@
33
import gsm.gsmjava.domain.user.entity.User;
44
import org.springframework.data.jpa.repository.JpaRepository;
55

6-
import java.util.Optional;
7-
86
public interface UserRepository extends JpaRepository<User, Long> {
9-
Optional<User> findByEmail(String email);
10-
boolean existsByEmail(String email);
117
}

src/main/java/gsm/gsmjava/global/filter/JwtReqFilter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ public class JwtReqFilter extends OncePerRequestFilter {
1919

2020
private final TokenParser tokenParser;
2121

22-
private final String AUTHORIZATION_HEADER = "Authorization";
23-
private final String BEARER_PREFIX = "Bearer ";
22+
public static String AUTHORIZATION_HEADER = "Authorization";
23+
public static String BEARER_PREFIX = "Bearer ";
2424

2525
@Override
2626
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {

src/main/java/gsm/gsmjava/global/security/auth/CustomUserDetails.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public Collection<? extends GrantedAuthority> getAuthorities() {
2727

2828
@Override
2929
public String getUsername() {
30-
return user.getEmail();
30+
return String.valueOf(user.getId());
3131
}
3232

3333
@Override

src/main/java/gsm/gsmjava/global/security/auth/CustomUserDetailsService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ public class CustomUserDetailsService implements UserDetailsService {
1919
private final UserRepository userRepository;
2020

2121
@Override
22-
public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException {
23-
User user = userRepository.findByEmail(email)
22+
public UserDetails loadUserByUsername(String userId) throws UsernameNotFoundException {
23+
User user = userRepository.findById(Long.valueOf(userId))
2424
.orElseThrow(() -> new GlobalException("유저를 찾을 수 없습니다.", HttpStatus.NOT_FOUND));
2525

2626
return new CustomUserDetails(user);

src/main/java/gsm/gsmjava/global/security/jwt/TokenGenerator.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,33 +20,33 @@ public class TokenGenerator {
2020
private final String ACCESS_TOKEN = "accessToken";
2121
private final String REFRESH_TOKEN = "refreshToken";
2222

23-
public TokenDto generateToken(String email) {
23+
public TokenDto generateToken(String userId) {
2424
return TokenDto.builder()
25-
.accessToken(generateAccessToken(email))
26-
.refreshToken(generateRefreshToken(email))
25+
.accessToken(generateAccessToken(userId))
26+
.refreshToken(generateRefreshToken(userId))
2727
.accessTokenExp(jwtEnv.accessExp())
2828
.refreshTokenExp(jwtEnv.refreshExp())
2929
.build();
3030
}
3131

32-
public String getEmailFromRefreshToken(String token) {
32+
public String getUserIdFromRefreshToken(String token) {
3333
return getRefreshTokenSubject(token);
3434
}
3535

36-
private String generateAccessToken(String email) {
36+
private String generateAccessToken(String userId) {
3737
return Jwts.builder()
3838
.signWith(Keys.hmacShaKeyFor(jwtEnv.accessSecret().getBytes()), SignatureAlgorithm.HS256)
39-
.setSubject(email)
39+
.setSubject(userId)
4040
.claim(TOKEN_TYPE, ACCESS_TOKEN)
4141
.setIssuedAt(new Date())
4242
.setExpiration(new Date(System.currentTimeMillis() + jwtEnv.accessExp() * 1000L))
4343
.compact();
4444
}
4545

46-
private String generateRefreshToken(String email) {
46+
private String generateRefreshToken(String userId) {
4747
return Jwts.builder()
4848
.signWith(Keys.hmacShaKeyFor(jwtEnv.refreshSecret().getBytes()), SignatureAlgorithm.HS256)
49-
.setSubject(email)
49+
.setSubject(userId)
5050
.claim(TOKEN_TYPE, REFRESH_TOKEN)
5151
.setIssuedAt(new Date())
5252
.setExpiration(new Date(System.currentTimeMillis() + jwtEnv.refreshExp() * 1000L))

src/main/java/gsm/gsmjava/global/security/jwt/TokenParser.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,10 @@ public class TokenParser {
1919
private final CustomUserDetailsService customUserDetailsService;
2020

2121
public UsernamePasswordAuthenticationToken authenticate(String accessToken) {
22-
UserDetails userDetails = customUserDetailsService.loadUserByUsername(getUserEmail(accessToken));
22+
UserDetails userDetails = customUserDetailsService.loadUserByUsername(getAccessTokenSubject(accessToken));
2323
return new UsernamePasswordAuthenticationToken(userDetails, "", userDetails.getAuthorities());
2424
}
2525

26-
private String getUserEmail(String accessToken) {
27-
return getAccessTokenSubject(accessToken);
28-
}
29-
3026
private String getAccessTokenSubject(String accessToken) {
3127
return getTokenBody(accessToken, Keys.hmacShaKeyFor(jwtEnv.accessSecret().getBytes())).getSubject();
3228
}

src/main/java/gsm/gsmjava/global/util/UserUtil.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ public User getCurrentUser() {
1919
Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
2020

2121
if (principal instanceof CustomUserDetails) {
22-
String email = ((CustomUserDetails) principal).getUsername();
23-
return userRepository.findByEmail(email)
22+
String userId = ((CustomUserDetails) principal).getUsername();
23+
return userRepository.findById(Long.valueOf(userId))
2424
.orElseThrow(() -> new GlobalException("유저를 찾을 수 없습니다.", HttpStatus.NOT_FOUND));
2525
} else {
2626
throw new GlobalException("현재 인증되어 있는 유저의 principal이 유효하지 않습니다.", HttpStatus.UNAUTHORIZED);

0 commit comments

Comments
 (0)