czt
2026-01-20 b00dd93dedca0c151a760fff48191b92ac572545
fzzy-igdss-web/src/main/java/com/fzzy/sys/controller/SysLoginController.java
@@ -1,5 +1,6 @@
package com.fzzy.sys.controller;
import com.fzzy.sys.LoginCheckManager;
import com.fzzy.sys.service.LoginService;
import com.ruoyi.common.config.FrameworkConfig;
import com.ruoyi.common.core.controller.BaseController;
@@ -12,6 +13,7 @@
import com.ruoyi.framework.shiro.token.PhoneToken;
import com.ruoyi.framework.web.service.ConfigService;
import com.ruoyi.system.service.ISysUserService;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.UsernamePasswordToken;
@@ -33,6 +35,7 @@
 *
 * @author ruoyi
 */
@Slf4j
@Controller
public class SysLoginController extends BaseController {
    /**
@@ -49,6 +52,9 @@
    @Resource
    private RedisCache redisCache;
    @Resource
    private LoginCheckManager loginCheckManager;
    @GetMapping("/login")
    public String login(HttpServletRequest request, HttpServletResponse response, ModelMap mmap) {
        // 如果是Ajax请求,返回Json字符串。
@@ -61,22 +67,63 @@
        String companyId = FrameworkConfig.getCompanyId();
        mmap.put("isAllowRegister", Convert.toBool(configService.getKey("sys.account.registerUser", companyId), false));
        mmap.put("isAllowRegister", true);
        return "login_new";
        return "login";
    }
    /**
     * 登录方法 ---系统自带
     *
     * @param username 用户名
     * @param password 密码
     * @param rememberMe 记住我
     * @return 结果
     @PostMapping("/login")
     @ResponseBody
     public AjaxResult ajaxLogin(String username, String password, Boolean rememberMe) {
     UsernamePasswordToken token = new UsernamePasswordToken(username, password, rememberMe);
     Subject subject = SecurityUtils.getSubject();
     try {
     subject.login(token);
     return success();
     } catch (AuthenticationException e) {
     log.error("登录异常", e);
     String msg = "用户名或者密码错误,请核对";
     return error(msg);
     }
     }
     */
    /**
     * 登录方法 ---自定义调整
     *
     * @param username 用户名
     * @param password 密码
     * @param rememberMe 记住我
     * @return 结果
     */
    @PostMapping("/login")
    @ResponseBody
    public AjaxResult ajaxLogin(String username, String password, Boolean rememberMe) {
        UsernamePasswordToken token = new UsernamePasswordToken(username, password, rememberMe);
        Subject subject = SecurityUtils.getSubject();
        try {
            subject.login(token);
            //清除错误信息
            loginCheckManager.clearCheckError(username);
            return success();
        } catch (AuthenticationException e) {
            String msg = "账号、密码或验证码错误,请重新输入";
//            if (StringUtils.isNotEmpty(e.getMessage())) {
//                msg = e.getMessage();
//            }
            //根据自定义换缓存判断信息
            String errorMsg = loginCheckManager.getCheckError(username);
            if(StringUtils.isNotBlank(errorMsg)){
                //loginCheckManager.clearCheckError(username);
                return error(errorMsg);
            }
            log.error("用户[" + username + "]登录异常,{}", e.getMessage());
            String msg = "登录异常,信息:"+e.getMessage();
            return error(msg);
        }
    }