#
luxiaotao1123
2024-01-30 9ced74ed4c953ced2d87e80cb8c30a89f75c1a55
#
3个文件已修改
3个文件已添加
123 ■■■■■ 已修改文件
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/security/JwtAuthenticationFilter.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/AuthController.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/param/LoginParam.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/result/LoginResult.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/service/UserService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/service/impl/UserServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/security/JwtAuthenticationFilter.java
@@ -93,8 +93,7 @@
                        String token = JwtUtil.buildToken(jwtSubject, configProperties.getTokenExpireTime(),
                                configProperties.getTokenKey());
                        response.addHeader(Constants.TOKEN_HEADER_NAME, token);
                        userLoginService.saveAsync(user.getId(), UserLogin.TYPE_REFRESH, null,
                                user.getHostId(), request);
                        userLoginService.saveAsync(user.getId(), UserLogin.TYPE_REFRESH, null, user.getHostId(), request);
                    }
                }
            } catch (ExpiredJwtException e) {
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/AuthController.java
New file
@@ -0,0 +1,59 @@
package com.zy.asrs.wcs.sys.controller;
import com.zy.asrs.common.web.BaseController;
import com.zy.asrs.framework.common.R;
import com.zy.asrs.wcs.common.config.ConfigProperties;
import com.zy.asrs.wcs.common.security.JwtSubject;
import com.zy.asrs.wcs.sys.controller.param.LoginParam;
import com.zy.asrs.wcs.sys.controller.result.LoginResult;
import com.zy.asrs.wcs.sys.entity.User;
import com.zy.asrs.wcs.sys.entity.UserLogin;
import com.zy.asrs.wcs.sys.service.UserLoginService;
import com.zy.asrs.wcs.sys.service.UserService;
import com.zy.asrs.wcs.utils.JwtUtil;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
/**
 * 认证控制器
 *
 * Created by vincent on 1/30/2024
 */
@RestController
@RequestMapping("/api")
public class AuthController extends BaseController {
    @Resource
    private ConfigProperties configProperties;
    @Resource
    private UserService userService;
    @Resource
    private UserLoginService userLoginService;
    @PostMapping("/login")
    public R login(@RequestBody LoginParam param, HttpServletRequest request) {
        String username = param.getUsername();
        Long hostId = param.getHostId();
        User user = userService.getByUsername(username, hostId);
        if (user == null) {
            return R.error("账号不存在");
        }
        if (!user.getStatus().equals(1)) {
            return R.error("账号被冻结");
        }
        if (!userService.comparePassword(user.getPassword(), param.getPassword())) {
            return R.error("密码错误");
        }
        userLoginService.saveAsync(user.getId(), UserLogin.TYPE_LOGIN, null, hostId, request);
        String accessToken = JwtUtil.buildToken(new JwtSubject(username, hostId),
                configProperties.getTokenExpireTime(), configProperties.getTokenKey());
        return R.ok("登录成功").add(new LoginResult(accessToken, user));
    }
}
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/param/LoginParam.java
New file
@@ -0,0 +1,21 @@
package com.zy.asrs.wcs.sys.controller.param;
import lombok.Data;
import java.io.Serializable;
/**
 * Created by vincent on 1/30/2024
 */
@Data
public class LoginParam implements Serializable {
    private static final long serialVersionUID = 1L;
    private String username;
    private String password;
    private Long hostId;
}
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/result/LoginResult.java
New file
@@ -0,0 +1,24 @@
package com.zy.asrs.wcs.sys.controller.result;
import com.zy.asrs.wcs.sys.entity.User;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
 * Created by vincent on 1/30/2024
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class LoginResult implements Serializable {
    private static final long serialVersionUID = 1L;
    private String accessToken;
    private User user;
}
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/service/UserService.java
@@ -7,4 +7,8 @@
    User getByUsername(String username, Long hostId);
    boolean comparePassword(String dbPassword, String inputPassword);
    String encodePassword(String password);
}
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/service/impl/UserServiceImpl.java
@@ -7,6 +7,7 @@
import com.zy.asrs.wcs.sys.service.RoleMenuService;
import com.zy.asrs.wcs.sys.service.UserRoleService;
import com.zy.asrs.wcs.sys.service.UserService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -18,6 +19,8 @@
    private UserRoleService userRoleService;
    @Resource
    private RoleMenuService roleMenuService;
    @Resource
    private BCryptPasswordEncoder bCryptPasswordEncoder;
    @Override
    public User getByUsername(String username, Long hostId) {
@@ -32,5 +35,14 @@
        return user;
    }
    @Override
    public boolean comparePassword(String dbPassword, String inputPassword) {
        return bCryptPasswordEncoder.matches(inputPassword, dbPassword);
    }
    @Override
    public String encodePassword(String password) {
        return password == null ? null : bCryptPasswordEncoder.encode(password);
    }
}