From b2849cd41f6d32d8ff8d0cbe00b4fd32f06681a0 Mon Sep 17 00:00:00 2001 From: sugus <1020570875@qq.com> Date: Thu, 10 Jul 2025 13:35:34 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E5=BD=95=E6=8E=88=E6=9D=83=EF=BC=88?= =?UTF-8?q?=E5=86=85=E9=83=A8=E4=BD=BF=E7=94=A8=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/security/rest/AuthController.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/aircraft-system/src/main/java/com/aircraft/modules/security/rest/AuthController.java b/aircraft-system/src/main/java/com/aircraft/modules/security/rest/AuthController.java index 86f0f87..6731990 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/security/rest/AuthController.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/security/rest/AuthController.java @@ -116,6 +116,35 @@ public class AuthController { return ResponseEntity.ok(authInfo); } + @ApiOperation("登录授权(内部使用)") + @AnonymousPostMapping(value = "/login/inner") + public ResponseEntity loginInner(@Validated @RequestBody AuthUserDto authUser, HttpServletRequest request) throws Exception { + + // 获取用户信息 + JwtUserDto jwtUser = userDetailsService.loadUserByUsername(authUser.getUsername()); + // 验证用户密码 + if (!passwordEncoder.matches(authUser.getPassword(), jwtUser.getPassword())) { + throw new BadRequestException("登录密码错误"); + } + Authentication authentication = new UsernamePasswordAuthenticationToken(jwtUser, null, jwtUser.getAuthorities()); + SecurityContextHolder.getContext().setAuthentication(authentication); + // 生成令牌 + String token = tokenProvider.createToken(jwtUser); + // 返回 token 与 用户信息 + Map authInfo = new HashMap(2) {{ + put("token", properties.getTokenStartWith() + token); + put("user", jwtUser); + }}; + if (loginProperties.isSingleLogin()) { + // 踢掉之前已经登录的token + onlineUserService.kickOutForUsername(authUser.getUsername()); + } + // 保存在线信息 + onlineUserService.save(jwtUser, token, request); + // 返回登录信息 + return ResponseEntity.ok(authInfo); + } + @ApiOperation("获取用户信息") @GetMapping(value = "/info") public ResponseEntity getUserInfo() {