| | |
| | | |
| | | import com.whyc.pojo.User; |
| | | import com.whyc.util.ShiroUtil; |
| | | import org.redisson.api.RedissonClient; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.*; |
| | | import javax.servlet.annotation.WebFilter; |
| | | import javax.servlet.http.HttpServletRequest; |
| | |
| | | @WebFilter(urlPatterns = "/*",filterName = "kickedOutFilter") |
| | | public class KickedOutFilter implements Filter { |
| | | |
| | | @Autowired |
| | | RedissonClient redissonClient; |
| | | |
| | | @Override |
| | | public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { |
| | | HttpSession session = ((HttpServletRequest) request).getSession(); |
| | |
| | | User user = ShiroUtil.getUser(); |
| | | if (user.getId() != 0) { |
| | | System.out.println("Filter过滤器中获取到的当前Session的SessionId为:" + session.getId()); |
| | | if (!request.getServletContext().getAttribute(user.getName()).equals(session.getId())) { |
| | | if (!redissonClient.getBucket(user.getName()).get().equals(session.getId())) { |
| | | //如果当前Session所对应的SessionId与全局中用户对应的SessionId不一致,则清除当前Session |
| | | session.invalidate(); |
| | | response.setContentType("text/html;charset=utf-8"); |