package com.jeesite.modules.mes.web; import com.jeesite.common.codec.DesUtils; import com.jeesite.common.config.Global; import com.jeesite.common.entity.Page; import com.jeesite.common.lang.ObjectUtils; import com.jeesite.common.lang.StringUtils; import com.jeesite.common.shiro.authc.FormToken; import com.jeesite.common.shiro.filter.FormFilter; import com.jeesite.common.web.BaseController; import com.jeesite.modules.file.service.FileUploadService; import com.jeesite.modules.mes.entity.MesApp; import com.jeesite.modules.mes.entity.MesDevice; import com.jeesite.modules.mes.service.MesAppService; import com.jeesite.modules.sys.entity.User; import com.jeesite.modules.sys.utils.UserUtils; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 登录Controller * @author hzd * @version 2023-08-11 */ @Controller @RequestMapping(value = "${adminPath}/mes/mesLogin") public class MesLoginController extends BaseController { @RequestMapping(value = "login") @ResponseBody public void login(HttpServletRequest request, HttpServletResponse response) { try { String secretKey = Global.getConfig("shiro.loginSubmit.secretKey"); String userCode = DesUtils.decode(request.getParameter("username"), secretKey); String userCode2 = DesUtils.encode("user2", secretKey); System.out.println("加密,usercode=" + userCode2); if(StringUtils.isEmpty(userCode)){ throw new AuthenticationException("登录失败"); } User user = UserUtils.getByLoginCode(userCode); if(ObjectUtils.isEmpty(user)){ throw new AuthenticationException("登录失败"); } if(!user.getStatus().equals("0")){ throw new AuthenticationException("登录失败"); } // FormToken 构造方法的三个参数:登录名、是否内部登录无条件、请求对象 UserUtils.getSubject().login(new FormToken(user.getLoginCode(), true, request)); System.out.println("登录成功,__sid=" + UserUtils.getSession().getId()); FormFilter.onLoginSuccess(request, response); } catch (AuthenticationException e) { FormFilter.onLoginFailure(e, request, response); } } @RequestMapping(value = "qrcode") public String qrcode(String userCode, Model model) { User user = UserUtils.get(userCode); model.addAttribute("user", user); String secretKey = Global.getConfig("shiro.loginSubmit.secretKey"); userCode = DesUtils.encode(user.getLoginCode(), secretKey); model.addAttribute("userCode", userCode); return "modules/sys/user/userQrcode"; } }