![]() |
ɽ¶«ÊÖ»ú±¨
º£±¨ÐÂÎÅ
¹«¹²Íø¹Ù·½Î¢ÐÅ
¹«¹²Íø¹Ù·½Î¢²©
¶¶Òô
ÈËÃñºÅ
È«¹úµ³Ã½Æ½Ì¨
ÑëÊÓƵ
°Ù¼ÒºÅ
¿ìÊÖ
Í·ÌõºÅ
ßÙÁ¨ßÙÁ¨
ÉîÛÚÐÂÎÅÍø
¸êçâÃ÷
ÊÖ»ú¼ì²ì
@PostMapping("/login") public ResponseEntity loginUser(@RequestBody LoginRequest loginRequest, HttpServletRequest request) { // ´ÓÊý¾Ý¿â»ñÈ¡Óû§ÐÅÏ¢ User user = userService.getUserByUsername(loginRequest.getUsername()); if (user == null) { return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("Óû§Ãû²»±£´æ"); } // УÑéÃÜÂë if (!encoder.matches(loginRequest.getPassword(), user.getPassword())) { return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("ÃÜÂë¹ýʧ"); } // Éú³ÉToken String token = jwtTokenUtils.generateToken(user); response.addCookie(jwtTokenUtils.createCookie(token));
// ¼Í¼µÇ¼ÈÕÖ¾
LoginLog loginLog = new LoginLog();
loginLog.setUserId(user.getId());
loginLog.setUsername(user.getUsername());
loginLog.setIp(request.getRemoteAddr());
loginLog.setLoginTime(new Date());
loginLog.setBrowser(request.getHeader("User-Agent"));
loginLogService.saveLoginLog(loginLog);
return ResponseEntity.ok(new LoginResponse("µÇ¼ÀÖ³É", token));
}
@GetMapping("/logout") public ResponseEntity logoutUser(HttpServletRequest request) { Cookie[] cookies = request.getCookies(); if (cookies != null) { for (Cookie cookie : cookies) { if (cookie.getName().equals(jwtTokenUtils.getTokenName())) { cookie.setMaxAge(0); response.addCookie(cookie); break; } } } return ResponseEntity.ok("×¢ÏúÀÖ³É"); }
@GetMapping("/refresh") public ResponseEntity refreshAccessToken(HttpServletRequest request) { Cookie[] cookies = request.getCookies(); if (cookies != null) { for (Cookie cookie : cookies) { if (cookie.getName().equals(jwtTokenUtils.getTokenName())) { String token = cookie.getValue(); try { Claims claims = jwtTokenUtils.parseToken(token); String username = claims.getSubject(); User user = userService.getUserByUsername(username); if (user == null) { return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("Óû§²»±£´æ"); } String newToken = jwtTokenUtils.generateToken(user); response.addCookie(jwtTokenUtils.createCookie(newToken)); return ResponseEntity.ok(new LoginResponse("ÁîÅÆË¢ÐÂÀÖ³É", newToken)); } catch (Exception e) { return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("ÎÞЧµÄÁîÅÆ"); } } } } return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("ÁîÅƲ»±£´æ"); }
ÎÒÒ²²»¼ÇµÃ¾ßÌåÔõôÅäÖã¬Äã¾Í×Ô¼ºÕÒ¸öÀý×ÓѧϰһÏ°ɡ£
?ËÞǨºÓ¶«Õ¾½ÖÊÇÒ»¸ö³äÂú»îÁ¦µÄµØ·½£¬ÕâÀï²»µ«½»Í¨±ãµ±£¬»¹»ã¾ÛÁËÖÚ¶àÃÀʳºÍÉÌÒµÉèÊ©£¬ÊÇ locals ºÍÓÎ¿Í alike µÄÈÈÃÅÈ¥´¦¡£ÎÞÂÛÊǹºÎï¡¢ÃÀʳÕÕ¾ÉÉ¢²½£¬ËÞǨºÓ¶«Õ¾½Ö¶¼ÄÜÂú×ãÄãµÄÐèÇó¡£ÖܱߵÄÂÌ»¯ºÍÉèÊ©ÈÃÕ¾½Ö³ÉΪһ¸öÒËÈ˵ĺÃÈ¥´¦£¬Ã¿´ÎÀ´ÕâÀﶼÄܸÐÊܵ½¶¼»áµÄÂö¶¯¡£
×Ô from Õ¾½Ö³ö·¢£¬Äã¿ÉÒԱ㵱µØÇ°ÍùËÞǨµÄ¸÷¸ö½ÇÂ䣬 public transport ÊÇÕâÀïµÄÒ»´óÁÁµã¡£ÎÞÂÛÊǹ«½»¡¢µØÌúÕվɳö×â³µ£¬ ËÞǨºÓ¶«Õ¾½Ö ¶¼Êǽ»Í¨ÊàŦ£¬±ãµ±¿ì½Ý¡£Èç¹ûÄãÊǵÚÒ»´ÎÀ´ÕâÀ½¨ÒéÌáÇ°¼Æ»®ºÃ·Ïߣ¬ÒÔÃâ´í¹ýÈκΠinteresting spots¡£Õ¾½ÖÖÜΧÁíÓÐÐí¶à²Í¹ÝºÍÉ̵꣬¹©ÄãÔÚ´ËÆÚ¼äÇáËɶ£Ööʱ¼ä¡£
˵µ½Õ¾½ÖµÄÃÀʳ£¬ËÞǨºÓ¶«Õ¾½Ö Ëæ´¦¶¼ÊÇÓÕÈ˵ÄС³ÔºÍ²Í¹Ý¡£´ÓÍâµØµÄÌØɫС³Ôµ½¹ú¼Ê»¯µÄ²ÍÒûÑ¡Ôñ£¬×ÜÓÐÒ»¿îÊʺÏÄãµÄ taste¡£Äã¿ÉÒÔʵÑéÍâµØµÄÃÀʳ£¬Ò²¿ÉÒÔÆ·³¢µ½À´×ÔÊÀ½ç¸÷µØµÄ cuisines¡£Õ¾½ÖµÄÒ¹ÊиüÊÇÈÈÄÖÌØÊ⣬ÖÖÖÖÃÀʳ̯λÁÕÀÅÂúÄ¿£¬ÊÇÌåÑéËÞǨҹÉú»îµÄ¾ø¼ÑÈ¥´¦¡£²»Òª forget to try Ò»ÏÂÍâµØµÄÌØÉ«ÃÀʳ£¬¾ø¶ÔÊÇÈÃÄãÁ÷Á¬Íü·µµÄ¾Àú¡£
station ½Ö²»¿ÉÊÇÒ»¸ö½»Í¨ hub£¬¸üÊÇËÞǨµÄÒ»¸ö cultural hub¡£ÕâÀï°´ÆÚ»áÓÐһЩ cultural events ºÍ exhibitions£¬ÎüÒýÁËÐí¶à locals ºÍ visitors¡£Èç¹ûÄã¶ÔËÞǨµÄÎÄ»¯¸ÐÐËȤ£¬ÎÞ·Á¼ÓÈëһЩ local events£¬Ç×ÉíÌåÑéËÞǨµÄ¹Å°åÎÄ»¯ºÍ modern Á¢Òì¡£Õ¾½ÖÖÜΧÁíÓÐÐí¶à historical sites£¬¿ÉÒÔÈÃÄã¸üÉîÈëÁ˽âËÞǨµÄÀúÊ·ºÍ culture¡£
overall£¬ËÞǨºÓ¶«Õ¾½Ö ÊÇÒ»¸öÖµµÃÒ»Óεĵط½£¬ÎÞÂÛÄãÊÇÀ´ËÞǨ³ö²îÕÕ¾ÉÂÃÓΣ¬ÕâÀﶼÊÇÒ»¸öÀíÏëµÄ stopover¡£Äã¿ÉÒÔÔÚÕâÀïËÉ¿ªÉíÐÄ£¬ÏíÊÜÃÀʳ£¬»òÕß¼ÓÈëÖÖÖÖ cultural activities¡£Ï´ÎÀ´ËÞǨµÄʱºò£¬Ò»¶¨Òª°ÑÕâ¸öµØ·½ÁÐÈëÄãµÄÐгÌÖÐŶ£¡vascular
Copyright (C) 2001- dzwww.com. All Rights Reserved
ÐÂÎÅÐÅϢЧÀÍÐí¿ÉÖ¤ - ÒôÏñÖÆÆ·³öÊéÐí¿ÉÖ¤ - ¹ã²¥µçÊÓ½ÚÄ¿ÖÆ×÷¾ÓªÐí¿ÉÖ¤ - ÍøÂçÊÓÌýÐí¿ÉÖ¤ - ÍøÂçÎÄ»¯¾ÓªÐí¿ÉÖ¤
ɽ¶«Ê¡»¥ÁªÍø´«Ã½¼¯ÍÅÖ÷°ì ÁªÏµµç»°£º**2 Î¥·¨²»Á¼ÐÅÏ¢¾Ù±¨µç»°£º**0
Copyright (C) 2001- Dzwww ³ICP±¸09023866ºÅ-1