feat(auth): AuthUtil 增加 getAdminUserIdOrThrow 和 getMemberUserIdOrThrow
- getAdminUserIdOrThrow: 校验 userType=ADMIN,否则返回 403 - getMemberUserIdOrThrow: 校验 userType=MEMBER,否则返回 403 - 保留 getMemberIdOrThrow 向后兼容
This commit is contained in:
@@ -29,4 +29,38 @@ public class AuthUtil {
|
|||||||
if (jwtTokenProvider.getUserIdFromToken(token) <= 0L) throw new IllegalArgumentException("ID无效");
|
if (jwtTokenProvider.getUserIdFromToken(token) <= 0L) throw new IllegalArgumentException("ID无效");
|
||||||
return jwtTokenProvider.getUserIdFromToken(token);
|
return jwtTokenProvider.getUserIdFromToken(token);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取当前 ADMIN 用户 ID,校验 userType 必须为 ADMIN
|
||||||
|
*/
|
||||||
|
public Long getAdminUserIdOrThrow(ServerRequest request) {
|
||||||
|
String token = extractToken(request);
|
||||||
|
if (token == null) throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, "缺少 Token");
|
||||||
|
if (!jwtTokenProvider.validateToken(token)) throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, "Token 无效或已过期");
|
||||||
|
String userType = jwtTokenProvider.getUserTypeFromToken(token);
|
||||||
|
if (!"ADMIN".equals(userType)) {
|
||||||
|
log.warn("非管理员用户尝试访问管理端接口, userType={}", userType);
|
||||||
|
throw new ResponseStatusException(HttpStatus.FORBIDDEN, "无权访问管理端接口");
|
||||||
|
}
|
||||||
|
Long userId = jwtTokenProvider.getUserIdFromToken(token);
|
||||||
|
if (userId <= 0L) throw new IllegalArgumentException("ID无效");
|
||||||
|
return userId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取当前 MEMBER 用户 ID,校验 userType 必须为 MEMBER
|
||||||
|
*/
|
||||||
|
public Long getMemberUserIdOrThrow(ServerRequest request) {
|
||||||
|
String token = extractToken(request);
|
||||||
|
if (token == null) throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, "缺少 Token");
|
||||||
|
if (!jwtTokenProvider.validateToken(token)) throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, "Token 无效或已过期");
|
||||||
|
String userType = jwtTokenProvider.getUserTypeFromToken(token);
|
||||||
|
if (!"MEMBER".equals(userType)) {
|
||||||
|
log.warn("非会员用户尝试访问会员接口, userType={}", userType);
|
||||||
|
throw new ResponseStatusException(HttpStatus.FORBIDDEN, "无权访问会员接口");
|
||||||
|
}
|
||||||
|
Long userId = jwtTokenProvider.getUserIdFromToken(token);
|
||||||
|
if (userId <= 0L) throw new IllegalArgumentException("ID无效");
|
||||||
|
return userId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user