

250324 김혜민 토큰관련 패키지 수정
@c2e7d5d0a1173e8eb8d8fb4152f47b1aa4b48c20
--- src/main/java/com/takensoft/cms/mber/vo/RefreshVO.java
... | ... | @@ -1,28 +0,0 @@ |
1 | -package com.takensoft.cms.mber.vo; | |
2 | - | |
3 | -import lombok.AllArgsConstructor; | |
4 | -import lombok.Getter; | |
5 | -import lombok.NoArgsConstructor; | |
6 | -import lombok.Setter; | |
7 | - | |
8 | -import java.util.Date; | |
9 | -/** | |
10 | - * @author : takensoft | |
11 | - * @since : 2024.04.01 | |
12 | - * @modification | |
13 | - * since | author | description | |
14 | - * 2024.04.01 | takensoft | 최초 등록 | |
15 | - * | |
16 | - * RefreshToken 정보 관련 VO | |
17 | - */ | |
18 | -@Setter | |
19 | -@Getter | |
20 | -@NoArgsConstructor | |
21 | -@AllArgsConstructor | |
22 | -public class RefreshVO { | |
23 | - | |
24 | - private String mbrId; // 회원 아이디 | |
25 | - private String token; // 토큰 | |
26 | - private Date expryDt; // 만료기간 | |
27 | - private String useIp; // 사용중인 아이피 | |
28 | -} |
--- src/main/java/com/takensoft/cms/mber/Schedule/RefreshScheduler.java
+++ src/main/java/com/takensoft/cms/token/Schedule/RefreshScheduler.java
... | ... | @@ -1,8 +1,6 @@ |
1 |
-package com.takensoft.cms.mber.Schedule; |
|
1 |
+package com.takensoft.cms.token.Schedule; |
|
2 | 2 |
|
3 |
-import com.takensoft.cms.mber.dao.RefreshTokenDAO; |
|
4 |
-import com.takensoft.common.exception.CustomUpdateFailException; |
|
5 |
-import org.springframework.dao.DataAccessException; |
|
3 |
+import com.takensoft.cms.token.dao.RefreshTokenDAO; |
|
6 | 4 |
import org.springframework.scheduling.annotation.Scheduled; |
7 | 5 |
import org.springframework.stereotype.Component; |
8 | 6 |
import org.springframework.transaction.annotation.Transactional; |
--- src/main/java/com/takensoft/cms/mber/dao/RefreshTokenDAO.java
+++ src/main/java/com/takensoft/cms/token/dao/RefreshTokenDAO.java
... | ... | @@ -1,6 +1,6 @@ |
1 |
-package com.takensoft.cms.mber.dao; |
|
1 |
+package com.takensoft.cms.token.dao; |
|
2 | 2 |
|
3 |
-import com.takensoft.cms.mber.vo.RefreshVO; |
|
3 |
+import com.takensoft.cms.token.vo.RefreshTknVO; |
|
4 | 4 |
import org.egovframe.rte.psl.dataaccess.mapper.Mapper; |
5 | 5 |
|
6 | 6 |
/** |
... | ... | @@ -17,20 +17,20 @@ |
17 | 17 |
public interface RefreshTokenDAO { |
18 | 18 |
|
19 | 19 |
/** |
20 |
- * @param refreshVO - RefreshToken 정보 관련 VO |
|
20 |
+ * @param refreshTknVO - RefreshToken 정보 관련 VO |
|
21 | 21 |
* @return int - refresh token 등록 결과 |
22 | 22 |
* |
23 | 23 |
* refresh token 등록 |
24 | 24 |
*/ |
25 |
- int save(RefreshVO refreshVO); |
|
25 |
+ int save(RefreshTknVO refreshTknVO); |
|
26 | 26 |
|
27 | 27 |
/** |
28 |
- * @param refreshVO - RefreshToken 정보 관련 VO |
|
28 |
+ * @param refreshTknVO - RefreshToken 정보 관련 VO |
|
29 | 29 |
* @return int - refresh token 삭제 결과 |
30 | 30 |
* |
31 | 31 |
* refresh token 삭제 |
32 | 32 |
*/ |
33 |
- int deleteByRefresh(RefreshVO refreshVO); |
|
33 |
+ int deleteByRefresh(RefreshTknVO refreshTknVO); |
|
34 | 34 |
|
35 | 35 |
/** |
36 | 36 |
* @return int - 기한 만료된 refresh token 삭제 결과 |
... | ... | @@ -40,10 +40,10 @@ |
40 | 40 |
int cleanExpiredRefreshTokens(); |
41 | 41 |
|
42 | 42 |
/** |
43 |
- * @param refreshVO - RefreshToken 정보 관련 VO |
|
43 |
+ * @param refreshTknVO - RefreshToken 정보 관련 VO |
|
44 | 44 |
* @return boolean - refresh token 등록 여부 |
45 | 45 |
* |
46 | 46 |
* refresh token 등록 여부 확인 |
47 | 47 |
*/ |
48 |
- boolean findByCheckRefresh(RefreshVO refreshVO); |
|
48 |
+ boolean findByCheckRefresh(RefreshTknVO refreshTknVO); |
|
49 | 49 |
} |
--- src/main/java/com/takensoft/cms/mber/service/RefreshTokenService.java
+++ src/main/java/com/takensoft/cms/token/service/RefreshTokenService.java
... | ... | @@ -1,10 +1,9 @@ |
1 |
-package com.takensoft.cms.mber.service; |
|
1 |
+package com.takensoft.cms.token.service; |
|
2 | 2 |
|
3 |
-import com.takensoft.cms.mber.vo.RefreshVO; |
|
3 |
+import com.takensoft.cms.token.vo.RefreshTknVO; |
|
4 | 4 |
|
5 | 5 |
import jakarta.servlet.http.HttpServletRequest; |
6 | 6 |
import jakarta.servlet.http.HttpServletResponse; |
7 |
-import org.springframework.dao.DataAccessException; |
|
8 | 7 |
|
9 | 8 |
/** |
10 | 9 |
* @author takensoft |
... | ... | @@ -26,7 +25,7 @@ |
26 | 25 |
* |
27 | 26 |
* refresh token 등록 |
28 | 27 |
*/ |
29 |
- public int saveRefreshToken(HttpServletRequest req, HttpServletResponse res, RefreshVO refresh, long expiredMs); |
|
28 |
+ public int saveRefreshToken(HttpServletRequest req, HttpServletResponse res, RefreshTknVO refresh, long expiredMs); |
|
30 | 29 |
|
31 | 30 |
/** |
32 | 31 |
* @param req - HTTP 요청 객체 |
... | ... | @@ -48,19 +47,19 @@ |
48 | 47 |
|
49 | 48 |
/** |
50 | 49 |
* @param req - HTTP 요청 객체 |
51 |
- * @param refreshVO - RefreshToken 정보 |
|
50 |
+ * @param refreshTknVO - RefreshToken 정보 |
|
52 | 51 |
* @return int - 토큰 삭제 결과 |
53 | 52 |
* |
54 | 53 |
* 토큰 삭제 |
55 | 54 |
*/ |
56 |
- public int delete(HttpServletRequest req, RefreshVO refreshVO); |
|
55 |
+ public int delete(HttpServletRequest req, RefreshTknVO refreshTknVO); |
|
57 | 56 |
|
58 | 57 |
/** |
59 | 58 |
* @param req - HTTP 요청 객체 |
60 |
- * @param refreshVO - RefreshToken 정보 |
|
59 |
+ * @param refreshTknVO - RefreshToken 정보 |
|
61 | 60 |
* @return boolean - refresh token 등록 여부 |
62 | 61 |
* |
63 | 62 |
* refresh token 등록 여부 확인 |
64 | 63 |
*/ |
65 |
- public boolean findByCheckRefresh(HttpServletRequest req, RefreshVO refreshVO); |
|
64 |
+ public boolean findByCheckRefresh(HttpServletRequest req, RefreshTknVO refreshTknVO); |
|
66 | 65 |
} |
--- src/main/java/com/takensoft/cms/mber/service/Impl/RefreshTokenServiceImpl.java
+++ src/main/java/com/takensoft/cms/token/service/impl/RefreshTokenServiceImpl.java
... | ... | @@ -1,10 +1,10 @@ |
1 |
-package com.takensoft.cms.mber.service.Impl; |
|
1 |
+package com.takensoft.cms.token.service.impl; |
|
2 | 2 |
|
3 |
-import com.takensoft.cms.mber.dao.RefreshTokenDAO; |
|
4 |
-import com.takensoft.cms.mber.service.RefreshTokenService; |
|
3 |
+import com.takensoft.cms.token.dao.RefreshTokenDAO; |
|
4 |
+import com.takensoft.cms.token.service.RefreshTokenService; |
|
5 | 5 |
import com.takensoft.cms.mber.vo.MberAuthorVO; |
6 | 6 |
import com.takensoft.cms.mber.vo.MberVO; |
7 |
-import com.takensoft.cms.mber.vo.RefreshVO; |
|
7 |
+import com.takensoft.cms.token.vo.RefreshTknVO; |
|
8 | 8 |
import com.takensoft.common.config.RedisConfig; |
9 | 9 |
import com.takensoft.common.util.HttpRequestUtil; |
10 | 10 |
import com.takensoft.common.util.JWTUtil; |
... | ... | @@ -108,7 +108,7 @@ |
108 | 108 |
* refresh token 등록 |
109 | 109 |
*/ |
110 | 110 |
@Override |
111 |
- public int saveRefreshToken(HttpServletRequest req, HttpServletResponse res, RefreshVO refresh, long expiredMs){ |
|
111 |
+ public int saveRefreshToken(HttpServletRequest req, HttpServletResponse res, RefreshTknVO refresh, long expiredMs){ |
|
112 | 112 |
try { |
113 | 113 |
// 만료 시간 |
114 | 114 |
refresh.setExpryDt(new Date(System.currentTimeMillis() + expiredMs)); |
... | ... | @@ -144,14 +144,14 @@ |
144 | 144 |
//Refresh 토큰 Cookie 값 0 |
145 | 145 |
//res.addCookie(jwtUtil.createCookie("refresh",null, 0)); |
146 | 146 |
|
147 |
- RefreshVO refreshVO = new RefreshVO(); |
|
148 |
- refreshVO.setMbrId((String) jwtUtil.getClaim(refreshTokenCheck(req).get("refreshToken").toString(), "mbrId")); |
|
147 |
+ RefreshTknVO refreshTknVO = new RefreshTknVO(); |
|
148 |
+ refreshTknVO.setMbrId((String) jwtUtil.getClaim(refreshTokenCheck(req).get("refreshToken").toString(), "mbrId")); |
|
149 | 149 |
|
150 | 150 |
//중복로그인 비허용시 삭제 |
151 | 151 |
if (!redisConfig.isAllowMultipleLogin()) { |
152 |
- redisTemplate.delete("jwt:" + refreshVO.getMbrId()); // 기존 JWT 삭제 |
|
152 |
+ redisTemplate.delete("jwt:" + refreshTknVO.getMbrId()); // 기존 JWT 삭제 |
|
153 | 153 |
} |
154 |
- return delete(req, refreshVO); |
|
154 |
+ return delete(req, refreshTknVO); |
|
155 | 155 |
} catch (DataAccessException dae) { |
156 | 156 |
throw dae; |
157 | 157 |
} catch (Exception e) { |
... | ... | @@ -205,7 +205,7 @@ |
205 | 205 |
|
206 | 206 |
// 남은 시간이 3시간 미만으로 남았을 경우 RefreshToken 재발급 |
207 | 207 |
if(timeDffrnc < 3) { |
208 |
- RefreshVO refresh = new RefreshVO(); |
|
208 |
+ RefreshTknVO refresh = new RefreshTknVO(); |
|
209 | 209 |
refresh.setMbrId(mber.getMbrId()); |
210 | 210 |
|
211 | 211 |
// 기존 RefreshToken 삭제 |
... | ... | @@ -233,7 +233,7 @@ |
233 | 233 |
} |
234 | 234 |
/** |
235 | 235 |
* @param req - HTTP 요청 객체 |
236 |
- * @param refreshVO - RefreshToken 정보 |
|
236 |
+ * @param refreshTknVO - RefreshToken 정보 |
|
237 | 237 |
* @return int - 토큰 삭제 결과 |
238 | 238 |
* @throws DataAccessException - db 관련 예외 발생 시 |
239 | 239 |
* @throws Exception - 그 외 예외 발생 시 |
... | ... | @@ -241,14 +241,14 @@ |
241 | 241 |
* 토큰 삭제 |
242 | 242 |
*/ |
243 | 243 |
@Override |
244 |
- public int delete(HttpServletRequest req, RefreshVO refreshVO) { |
|
244 |
+ public int delete(HttpServletRequest req, RefreshTknVO refreshTknVO) { |
|
245 | 245 |
try { |
246 |
- refreshVO.setUseIp(httpRequestUtil.getIp(req)); |
|
246 |
+ refreshTknVO.setUseIp(httpRequestUtil.getIp(req)); |
|
247 | 247 |
//중복로그인 비허용시 삭제 |
248 | 248 |
if (!redisConfig.isAllowMultipleLogin()) { |
249 |
- redisTemplate.delete("jwt:" + refreshVO.getMbrId()); // 기존 JWT 삭제 |
|
249 |
+ redisTemplate.delete("jwt:" + refreshTknVO.getMbrId()); // 기존 JWT 삭제 |
|
250 | 250 |
} |
251 |
- return refreshTokenDAO.deleteByRefresh(refreshVO); |
|
251 |
+ return refreshTokenDAO.deleteByRefresh(refreshTknVO); |
|
252 | 252 |
|
253 | 253 |
} catch (DataAccessException dae) { |
254 | 254 |
throw dae; |
... | ... | @@ -258,7 +258,7 @@ |
258 | 258 |
} |
259 | 259 |
/** |
260 | 260 |
* @param req - HTTP 요청 객체 |
261 |
- * @param refreshVO - RefreshToken 정보 |
|
261 |
+ * @param refreshTknVO - RefreshToken 정보 |
|
262 | 262 |
* @return boolean - refresh token 등록 여부 |
263 | 263 |
* @throws DataAccessException - db 관련 예외 발생 시 |
264 | 264 |
* @throws Exception - 그 외 예외 발생 시 |
... | ... | @@ -266,11 +266,11 @@ |
266 | 266 |
* refresh token 등록 여부 확인 |
267 | 267 |
*/ |
268 | 268 |
@Override |
269 |
- public boolean findByCheckRefresh(HttpServletRequest req, RefreshVO refreshVO) { |
|
269 |
+ public boolean findByCheckRefresh(HttpServletRequest req, RefreshTknVO refreshTknVO) { |
|
270 | 270 |
try { |
271 | 271 |
// 사용중인 아이피 |
272 |
- refreshVO.setUseIp(httpRequestUtil.getIp(req)); |
|
273 |
- return refreshTokenDAO.findByCheckRefresh(refreshVO); |
|
272 |
+ refreshTknVO.setUseIp(httpRequestUtil.getIp(req)); |
|
273 |
+ return refreshTokenDAO.findByCheckRefresh(refreshTknVO); |
|
274 | 274 |
} catch (DataAccessException dae) { |
275 | 275 |
throw dae; |
276 | 276 |
} catch (Exception e) { |
+++ src/main/java/com/takensoft/cms/token/vo/RefreshTknVO.java
... | ... | @@ -0,0 +1,38 @@ |
1 | +package com.takensoft.cms.token.vo; | |
2 | + | |
3 | +import lombok.*; | |
4 | + | |
5 | +import java.util.Date; | |
6 | +/** | |
7 | + * @author : takensoft | |
8 | + * @since : 2024.04.01 | |
9 | + * @modification | |
10 | + * since | author | description | |
11 | + * 2024.04.01 | takensoft | 최초 등록 | |
12 | + * | |
13 | + * RefreshToken 정보 관련 VO | |
14 | + */ | |
15 | +@Setter | |
16 | +@Getter | |
17 | +@NoArgsConstructor | |
18 | +@AllArgsConstructor | |
19 | +public class RefreshTknVO { | |
20 | + | |
21 | + private String mbrId; // 회원 아이디 | |
22 | + private String token; // 토큰 | |
23 | + private Date expryDt; // 만료기간 | |
24 | + private String useIp; // 사용중인 아이피 | |
25 | +/* | |
26 | + @Builder | |
27 | + public RefreshTknVO(String mbrId, String token, Date expryDt, String useIp) { | |
28 | + this.mbrId = mbrId; | |
29 | + this.token = token; | |
30 | + this.expryDt = expryDt; | |
31 | + this.useIp = useIp; | |
32 | + } | |
33 | + | |
34 | + public RefreshTknVO(String mbrId, String useIp) { | |
35 | + this.mbrId = mbrId; | |
36 | + this.useIp = useIp; | |
37 | + }*/ | |
38 | +} |
--- src/main/java/com/takensoft/cms/mber/web/RefreshTokenController.java
+++ src/main/java/com/takensoft/cms/token/web/RefreshTokenController.java
... | ... | @@ -1,7 +1,7 @@ |
1 |
-package com.takensoft.cms.mber.web; |
|
1 |
+package com.takensoft.cms.token.web; |
|
2 | 2 |
|
3 | 3 |
|
4 |
-import com.takensoft.cms.mber.service.RefreshTokenService; |
|
4 |
+import com.takensoft.cms.token.service.RefreshTokenService; |
|
5 | 5 |
import com.takensoft.common.message.MessageCode; |
6 | 6 |
import com.takensoft.common.util.ResponseData; |
7 | 7 |
import com.takensoft.common.util.ResponseUtil; |
--- src/main/java/com/takensoft/common/config/SecurityConfig.java
+++ src/main/java/com/takensoft/common/config/SecurityConfig.java
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 |
|
3 | 3 |
import com.takensoft.cms.accesCtrl.service.AccesCtrlService; |
4 | 4 |
import com.takensoft.cms.mber.service.LgnHstryService; |
5 |
-import com.takensoft.cms.mber.service.RefreshTokenService; |
|
5 |
+import com.takensoft.cms.token.service.RefreshTokenService; |
|
6 | 6 |
import com.takensoft.common.filter.AccesFilter; |
7 | 7 |
import com.takensoft.common.filter.JWTFilter; |
8 | 8 |
import com.takensoft.common.filter.LoginFilter; |
--- src/main/java/com/takensoft/common/filter/LoginFilter.java
+++ src/main/java/com/takensoft/common/filter/LoginFilter.java
... | ... | @@ -3,10 +3,10 @@ |
3 | 3 |
import com.fasterxml.jackson.databind.ObjectMapper; |
4 | 4 |
import com.takensoft.cms.mber.dto.LoginDTO; |
5 | 5 |
import com.takensoft.cms.mber.service.LgnHstryService; |
6 |
-import com.takensoft.cms.mber.service.RefreshTokenService; |
|
6 |
+import com.takensoft.cms.token.service.RefreshTokenService; |
|
7 | 7 |
import com.takensoft.cms.mber.vo.LgnHstryVO; |
8 | 8 |
import com.takensoft.cms.mber.vo.MberVO; |
9 |
-import com.takensoft.cms.mber.vo.RefreshVO; |
|
9 |
+import com.takensoft.cms.token.vo.RefreshTknVO; |
|
10 | 10 |
import com.takensoft.common.config.AppConfig; |
11 | 11 |
import com.takensoft.common.config.RedisConfig; |
12 | 12 |
import com.takensoft.common.exception.FilterExceptionHandler; |
... | ... | @@ -143,7 +143,7 @@ |
143 | 143 |
String refreshToken = jwtUtil.createJwt("refresh", mber.getMbrId(), mber.getLgnId(), mber.getMbrNm(), (List) mber.getAuthorities(), JWT_REFRESHTIME); |
144 | 144 |
|
145 | 145 |
// refreshToken이 현재 IP와 계정으로 등록되어 있는지 확인 |
146 |
- RefreshVO refresh = new RefreshVO(); |
|
146 |
+ RefreshTknVO refresh = new RefreshTknVO(); |
|
147 | 147 |
refresh.setMbrId(mber.getMbrId()); |
148 | 148 |
|
149 | 149 |
// refresh 토큰이 현재 아이피와 아이디로 DB에 등록 되어 있다면 |
--- src/main/resources/mybatis/mapper/mber/refresh-SQL.xml
+++ src/main/resources/mybatis/mapper/mber/refresh-SQL.xml
... | ... | @@ -5,14 +5,14 @@ |
5 | 5 |
작성일 : 2024.04.04 |
6 | 6 |
내 용 : 토큰 관련 |
7 | 7 |
--> |
8 |
-<mapper namespace="com.takensoft.cms.mber.dao.RefreshTokenDAO"> |
|
8 |
+<mapper namespace="com.takensoft.cms.token.dao.RefreshTokenDAO"> |
|
9 | 9 |
|
10 | 10 |
<!-- |
11 | 11 |
작성자 : takensoft |
12 | 12 |
작성일 : 2024.04.04 |
13 | 13 |
내 용 : refresh token 등록 |
14 | 14 |
--> |
15 |
- <insert id="save" parameterType="RefreshVO"> |
|
15 |
+ <insert id="save" parameterType="RefreshTknVO"> |
|
16 | 16 |
INSERT INTO mbr_refresh ( |
17 | 17 |
mbr_id |
18 | 18 |
, token |
... | ... | @@ -31,7 +31,7 @@ |
31 | 31 |
작성일 : 2024.04.04 |
32 | 32 |
내 용 : refresh token 삭제 |
33 | 33 |
--> |
34 |
- <delete id="deleteByRefresh" parameterType="RefreshVO"> |
|
34 |
+ <delete id="deleteByRefresh" parameterType="RefreshTknVO"> |
|
35 | 35 |
DELETE |
36 | 36 |
FROM mbr_refresh |
37 | 37 |
WHERE mbr_id = #{mbrId} |
... | ... | @@ -54,7 +54,7 @@ |
54 | 54 |
작성일 : 2024.04.17 |
55 | 55 |
내 용 : refresh token 유무 확인 |
56 | 56 |
--> |
57 |
- <select id="findByCheckRefresh" parameterType="RefreshVO" resultType="boolean"> |
|
57 |
+ <select id="findByCheckRefresh" parameterType="RefreshTknVO" resultType="boolean"> |
|
58 | 58 |
SELECT EXISTS ( |
59 | 59 |
SELECT 1 |
60 | 60 |
FROM mbr_refresh |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?