diff --git a/udf-api/udf-api-common/src/main/java/org/itkk/udf/api/common/CommonUtil.java b/udf-api/udf-api-common/src/main/java/org/itkk/udf/api/common/CommonUtil.java index 20f5814..a80747c 100644 --- a/udf-api/udf-api-common/src/main/java/org/itkk/udf/api/common/CommonUtil.java +++ b/udf-api/udf-api-common/src/main/java/org/itkk/udf/api/common/CommonUtil.java @@ -1,10 +1,14 @@ package org.itkk.udf.api.common; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.ArrayUtils; import org.itkk.udf.api.common.dto.UserDto; import org.itkk.udf.starter.core.exception.AuthException; +import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; +import java.util.Arrays; +import java.util.Optional; /** * 工具类 @@ -40,6 +44,23 @@ public class CommonUtil { return null; } + /** + * 从cookie中获得token + * + * @param request request + * @return String + */ + public static String getTokenByCookie(HttpServletRequest request) { + if (ArrayUtils.isNotEmpty(request.getCookies())) { + Optional cookie = Arrays.stream(request.getCookies()).filter(a -> a.getName().equals(CommonConstant.PARAMETER_NAME_TOKEN)).findFirst(); + if (cookie.isPresent()) { + return cookie.get().getValue(); + } + } + return null; + } + + /** * 私有化构造函数 */ diff --git a/udf-api/udf-api-common/src/main/java/org/itkk/udf/api/common/dto/UserDto.java b/udf-api/udf-api-common/src/main/java/org/itkk/udf/api/common/dto/UserDto.java index 005d02b..cb96d3f 100644 --- a/udf-api/udf-api-common/src/main/java/org/itkk/udf/api/common/dto/UserDto.java +++ b/udf-api/udf-api-common/src/main/java/org/itkk/udf/api/common/dto/UserDto.java @@ -36,10 +36,15 @@ public class UserDto implements Serializable { private String nickName; /** - * 用户头像文件ID(非空) + * 用户头像文件ID */ private String avatarFileId; + /** + * 用户头像路径 + */ + private String avatarFilePath; + /** * 用户状态 (1:正常) */ diff --git a/udf-api/udf-api-common/src/main/java/org/itkk/udf/api/common/service/IUserService.java b/udf-api/udf-api-common/src/main/java/org/itkk/udf/api/common/service/IUserService.java index 108f303..e8b574d 100644 --- a/udf-api/udf-api-common/src/main/java/org/itkk/udf/api/common/service/IUserService.java +++ b/udf-api/udf-api-common/src/main/java/org/itkk/udf/api/common/service/IUserService.java @@ -12,4 +12,12 @@ public interface IUserService { */ UserDto info(String userId); + /** + * 获得用户信息 + * + * @param token token + * @return UserDto + */ + UserDto infoByToken(String token); + } diff --git a/udf-api/udf-api-rbac/src/main/java/org/itkk/udf/api/rbac/RbacConfiguration.java b/udf-api/udf-api-rbac/src/main/java/org/itkk/udf/api/rbac/RbacConfiguration.java index 38f4d44..7725a5b 100644 --- a/udf-api/udf-api-rbac/src/main/java/org/itkk/udf/api/rbac/RbacConfiguration.java +++ b/udf-api/udf-api-rbac/src/main/java/org/itkk/udf/api/rbac/RbacConfiguration.java @@ -1,6 +1,7 @@ package org.itkk.udf.api.rbac; import org.itkk.udf.api.common.CommonConstant; +import org.itkk.udf.api.rbac.auth.CommonHandlerInterceptor; import org.itkk.udf.api.rbac.auth.WebHandlerInterceptor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; @@ -18,6 +19,12 @@ public class RbacConfiguration implements WebMvcConfigurer { @Autowired private WebHandlerInterceptor webHandlerInterceptor; + /** + * commonHandlerInterceptor + */ + @Autowired + private CommonHandlerInterceptor commonHandlerInterceptor; + /** * 添加拦截器 * @@ -25,7 +32,7 @@ public class RbacConfiguration implements WebMvcConfigurer { */ @Override public void addInterceptors(InterceptorRegistry registry) { - //身份认证拦截器 - registry.addInterceptor(webHandlerInterceptor).order(1).addPathPatterns(CommonConstant.URL_ROOT_WEB_PRIVATE + "**"); + registry.addInterceptor(commonHandlerInterceptor).order(1).addPathPatterns("/**"); + registry.addInterceptor(webHandlerInterceptor).order(2).addPathPatterns(CommonConstant.URL_ROOT_WEB_PRIVATE + "**"); } } diff --git a/udf-api/udf-api-rbac/src/main/java/org/itkk/udf/api/rbac/auth/CommonHandlerInterceptor.java b/udf-api/udf-api-rbac/src/main/java/org/itkk/udf/api/rbac/auth/CommonHandlerInterceptor.java new file mode 100644 index 0000000..8955cb1 --- /dev/null +++ b/udf-api/udf-api-rbac/src/main/java/org/itkk/udf/api/rbac/auth/CommonHandlerInterceptor.java @@ -0,0 +1,38 @@ +package org.itkk.udf.api.rbac.auth; + + +import lombok.extern.slf4j.Slf4j; +import org.itkk.udf.api.common.CommonUtil; +import org.itkk.udf.api.common.dto.UserDto; +import org.itkk.udf.api.common.service.IUserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.web.servlet.HandlerInterceptor; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@Component +@Slf4j +public class CommonHandlerInterceptor implements HandlerInterceptor { + /** + * iUserService + */ + @Autowired + private IUserService iUserService; + + @Override + public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { + //判空 + if (modelAndView != null) { + //获得用户信息 + UserDto userDto = iUserService.infoByToken(CommonUtil.getTokenByCookie(request)); + //判断是否登陆 + if (userDto != null) { + //放入用户信息 + modelAndView.addObject("userDto", userDto); + } + } + } +} diff --git a/udf-api/udf-api-rbac/src/main/java/org/itkk/udf/api/rbac/auth/WebHandlerInterceptor.java b/udf-api/udf-api-rbac/src/main/java/org/itkk/udf/api/rbac/auth/WebHandlerInterceptor.java index 742df45..fa1a287 100644 --- a/udf-api/udf-api-rbac/src/main/java/org/itkk/udf/api/rbac/auth/WebHandlerInterceptor.java +++ b/udf-api/udf-api-rbac/src/main/java/org/itkk/udf/api/rbac/auth/WebHandlerInterceptor.java @@ -2,12 +2,10 @@ package org.itkk.udf.api.rbac.auth; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; import org.itkk.udf.api.common.CommonConstant; import org.itkk.udf.api.common.CommonProperties; import org.itkk.udf.api.common.dto.UserDto; -import org.itkk.udf.api.rbac.service.UserService; -import org.itkk.udf.starter.cache.db.dto.DbCacheDto; +import org.itkk.udf.api.common.service.IUserService; import org.itkk.udf.starter.cache.db.service.DbCacheService; import org.itkk.udf.starter.core.CoreUtil; import org.itkk.udf.starter.core.exception.AuthException; @@ -35,10 +33,10 @@ public class WebHandlerInterceptor implements HandlerInterceptor { private CommonProperties commonProperties; /** - * userService + * iUserService */ @Autowired - private UserService userService; + private IUserService iUserService; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { @@ -46,18 +44,12 @@ public class WebHandlerInterceptor implements HandlerInterceptor { if (!HttpMethod.OPTIONS.toString().equals(request.getMethod())) { //获得token final String token = CoreUtil.getParameter(request, CommonConstant.PARAMETER_NAME_TOKEN); + //获得tokenInfo + UserDto userDto = iUserService.infoByToken(token); //判空 - if (StringUtils.isBlank(token)) { - throw new AuthException("缺少必要参数token"); - } - //获得token信息 - DbCacheDto dbCacheDto = dbCacheService.getDto(token); - //判空 - if (dbCacheDto == null) { + if (userDto == null) { throw new AuthException("token不存在"); } - //获得tokenInfo - UserDto userDto = userService.info(token, dbCacheDto.getValue()); //放入请求作用域 request.setAttribute(CommonConstant.PARAMETER_NAME_TOKEN_INFO, userDto); //刷新token ttl diff --git a/udf-api/udf-api-rbac/src/main/java/org/itkk/udf/api/rbac/service/UserService.java b/udf-api/udf-api-rbac/src/main/java/org/itkk/udf/api/rbac/service/UserService.java index 2b449c6..d50dc87 100644 --- a/udf-api/udf-api-rbac/src/main/java/org/itkk/udf/api/rbac/service/UserService.java +++ b/udf-api/udf-api-rbac/src/main/java/org/itkk/udf/api/rbac/service/UserService.java @@ -15,6 +15,7 @@ import org.itkk.udf.api.rbac.dto.RegisteredDto; import org.itkk.udf.api.rbac.dto.UserSaveDto; import org.itkk.udf.api.rbac.entity.UserEntity; import org.itkk.udf.api.rbac.repository.IUserRepository; +import org.itkk.udf.starter.cache.db.dto.DbCacheDto; import org.itkk.udf.starter.cache.db.service.DbCacheService; import org.itkk.udf.starter.core.CoreUtil; import org.itkk.udf.starter.core.exception.AuthException; @@ -252,6 +253,21 @@ public class UserService implements IUserService { return userDto; } + @Override + public UserDto infoByToken(String token) { + //判空 + if (StringUtils.isBlank(token)) { + //获得token信息 + DbCacheDto dbCacheDto = dbCacheService.getDto(token); + //判空 + if (dbCacheDto != null) { + this.info(token, dbCacheDto.getValue()); + } + } + //返回 + return null; + } + @Override public UserDto info(String userId) { //定义返回值 diff --git a/udf-api/udf-api-server/src/main/java/org/itkk/udf/api/server/web/HomeController.java b/udf-api/udf-api-server/src/main/java/org/itkk/udf/api/server/web/HomeController.java index e533094..4d62789 100644 --- a/udf-api/udf-api-server/src/main/java/org/itkk/udf/api/server/web/HomeController.java +++ b/udf-api/udf-api-server/src/main/java/org/itkk/udf/api/server/web/HomeController.java @@ -14,8 +14,6 @@ public class HomeController { */ @GetMapping(value = {"/", "/index.html"}) public String index(Model map) { - //放入作用域参数 - map.addAttribute("title", "ITKK"); //跳转到首页 return "index"; } diff --git a/udf-api/udf-api-server/src/main/resources/templates/common.html b/udf-api/udf-api-server/src/main/resources/templates/common.html index f9d7fa3..dd36e65 100644 --- a/udf-api/udf-api-server/src/main/resources/templates/common.html +++ b/udf-api/udf-api-server/src/main/resources/templates/common.html @@ -293,7 +293,7 @@ padding-top: 5px; } - [(${title})] + ITKK
@@ -319,18 +319,16 @@
- -
+ -
+
@@ -360,6 +358,12 @@