SecurityUtil.java 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package com.smartreview.utils;
  2. import com.smartreview.exception.SmartReviewException;
  3. import com.smartreview.po.User;
  4. import jakarta.servlet.http.HttpServletRequest;
  5. import lombok.RequiredArgsConstructor;
  6. import org.springframework.stereotype.Component;
  7. import org.springframework.web.context.request.RequestContextHolder;
  8. import org.springframework.web.context.request.ServletRequestAttributes;
  9. /**
  10. * 安全工具类
  11. */
  12. @Component
  13. @RequiredArgsConstructor
  14. public class SecurityUtil {
  15. private final TokenUtil tokenUtil;
  16. /**
  17. * 获取当前登录用户ID
  18. */
  19. public Long getCurrentUserId() {
  20. HttpServletRequest request = getCurrentRequest();
  21. if (request == null) {
  22. throw SmartReviewException.notLogin();
  23. }
  24. // 优先从session获取
  25. User user = (User) request.getSession().getAttribute("currentUser");
  26. if (user != null) {
  27. return user.getId();
  28. }
  29. // 从token获取
  30. String token = request.getHeader("token");
  31. if (token == null || token.isEmpty()) {
  32. token = request.getHeader("Authorization");
  33. if (token != null && token.startsWith("Bearer ")) {
  34. token = token.substring(7);
  35. }
  36. }
  37. Long userId = tokenUtil.getUserId(token);
  38. if (userId == null) {
  39. throw SmartReviewException.notLogin();
  40. }
  41. return userId;
  42. }
  43. /**
  44. * 获取当前登录用户
  45. */
  46. public User getCurrentUser() {
  47. HttpServletRequest request = getCurrentRequest();
  48. if (request == null) {
  49. throw SmartReviewException.notLogin();
  50. }
  51. User user = (User) request.getSession().getAttribute("currentUser");
  52. if (user != null) {
  53. return user;
  54. }
  55. String token = request.getHeader("token");
  56. if (token == null || token.isEmpty()) {
  57. token = request.getHeader("Authorization");
  58. if (token != null && token.startsWith("Bearer ")) {
  59. token = token.substring(7);
  60. }
  61. }
  62. user = tokenUtil.getUser(token);
  63. if (user == null) {
  64. throw SmartReviewException.notLogin();
  65. }
  66. return user;
  67. }
  68. private HttpServletRequest getCurrentRequest() {
  69. ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
  70. return attributes != null ? attributes.getRequest() : null;
  71. }
  72. }