|
|
@@ -11,6 +11,7 @@ import com.ruoyi.common.core.domain.entity.SysUser;
|
|
|
import com.ruoyi.common.core.domain.model.LoginCard;
|
|
|
import com.ruoyi.common.enums.ExamType;
|
|
|
import com.ruoyi.common.enums.UserRegStatus;
|
|
|
+import com.ruoyi.framework.web.context.VistorContextHolder;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
|
|
import org.springframework.security.core.context.SecurityContextHolder;
|
|
|
@@ -44,6 +45,7 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter
|
|
|
UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(loginUser, null, loginUser.getAuthorities());
|
|
|
authenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
|
|
|
SecurityContextHolder.getContext().setAuthentication(authenticationToken);
|
|
|
+ VistorContextHolder.setContext(loginUser.getUser());
|
|
|
} else {
|
|
|
SysUser user = new SysUser();
|
|
|
user.setUserId(0L);
|
|
|
@@ -52,11 +54,13 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter
|
|
|
String examType = request.getHeader("examType");
|
|
|
user.setExamType(null == examType ? null : ExamType.valueOf(examType));
|
|
|
user.setRegStatus(UserRegStatus.Visitor);
|
|
|
- LoginUser anonymous = new LoginUser(user.getUserId(), 0L, user, new LoginCard(), Collections.emptyNavigableSet());
|
|
|
- UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(anonymous, null, Collections.emptyList());
|
|
|
- authenticationToken.setAuthenticated(false);
|
|
|
- SecurityContextHolder.getContext().setAuthentication(authenticationToken);
|
|
|
+ VistorContextHolder.setContext(user);
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ chain.doFilter(request, response);
|
|
|
+ } finally {
|
|
|
+ VistorContextHolder.clearContext();
|
|
|
}
|
|
|
- chain.doFilter(request, response);
|
|
|
+
|
|
|
}
|
|
|
}
|