@Controller
public class HelloController {/*** 无需登录就可访问** @return*/@ResponseBody@GetMapping(value = "/hello")public String hello() {return "hello";}@GetMapping(value = "/employees")public String employees(Model model, HttpSession session, @RequestParam(value = "token", required = false) String token) {if (!StringUtils.isEmpty(token)) {RestTemplate restTemplate=new RestTemplate();ResponseEntity<String> forEntity = restTemplate.getForEntity("http://sso.mroldx.cn:8080/userinfo?token=" + token, String.class);String body = forEntity.getBody();session.setAttribute("loginUser", body);}Object loginUser = session.getAttribute("loginUser");if (loginUser == null) {return "redirect:" + "http://sso.mroldx.cn:8080/login.html"+"?redirect_url=http://localhost:8081/employees";} else {List<String> emps = new ArrayList<>();emps.add("张三");emps.add("李四");model.addAttribute("emps", emps);return "employees";}}}
@Controller
public class LoginController {@AutowiredStringRedisTemplate redisTemplate;@ResponseBody@GetMapping("/userinfo")public String userinfo(@RequestParam(value = "token") String token) {String s = redisTemplate.opsForValue().get(token);return s;}@GetMapping("/login.html")public String loginPage(@RequestParam("redirect_url") String url, Model model, @CookieValue(value = "sso_token", required = false) String sso_token) {if (!StringUtils.isEmpty(sso_token)) {return "redirect:" + url + "?token=" + sso_token;}model.addAttribute("url", url);return "login";}@PostMapping(value = "/doLogin")public String doLogin(@RequestParam("username") String username, @RequestParam("password") String password, @RequestParam("redirect_url") String url, HttpServletResponse response) {//登录成功跳转,跳回到登录页if (!StringUtils.isEmpty(username) && !StringUtils.isEmpty(password)) {String uuid = UUID.randomUUID().toString().replace("_", "");redisTemplate.opsForValue().set(uuid, username);Cookie sso_token = new Cookie("sso_token", uuid);response.addCookie(sso_token);return "redirect:" + url + "?token=" + uuid;}return "login";}}