package com.kedacom.keda.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.session.ExpiringSession; import org.springframework.session.FindByIndexNameSessionRepository; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.util.Map; /** * 测试Controller,以便于观察Spring Session的特性 */ @Controller public class CookieController { @Autowired FindByIndexNameSessionRepository<? extends ExpiringSession> sessionRepository; //访问http://localhost:8771/test/cookie?browser=chrome可演示出测试效果 //而http://localhost:8764/eureka-web/test/cookie?browser=chrome使用服务网关后则不行 @RequestMapping("/test/cookie") public String cookie(@RequestParam("browser") String browser, HttpServletRequest request, HttpSession session) { //取出session中的browser Object sessionBrowser = session.getAttribute("browser"); if (sessionBrowser == null) { System.out.println("不存在session,设置browser=" + browser); session.setAttribute("browser", browser); } else { System.out.println("存在session,browser=" + sessionBrowser.toString()); } Cookie[] cookies = request.getCookies(); if (cookies != null && cookies.length > 0) { for (Cookie cookie : cookies) { System.out.println(cookie.getName() + " : " + cookie.getValue()); } } return "index"; } @RequestMapping("/test/findByUsername") @ResponseBody public Map findByUsername(@RequestParam String username) { Map<String, ? extends ExpiringSession> usersSessions = sessionRepository.findByIndexNameAndIndexValue(FindByIndexNameSessionRepository.PRINCIPAL_NAME_INDEX_NAME, username); return usersSessions; } }