package com.ots.project.system.user.controller; import com.ots.common.utils.ServletUtils; import com.ots.common.utils.StringUtils; import com.ots.framework.web.controller.BaseController; import com.ots.framework.web.domain.AjaxResult; import com.ots.project.tool.exam.DecryptUtil; import org.apache.commons.codec.DecoderException; import org.apache.commons.codec.binary.Hex; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.subject.Subject; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Value; @Controller public class LoginController extends BaseController { /* 这个是获取配置文件里的版本,如果是online,就是新加坡的版本,要使用英文。 */ @Value("${spring.profiles.active}") private String active; @GetMapping("/login") public String login(HttpServletRequest request, HttpServletResponse response) { String lang = request.getParameter("lang"); String noLogin = "{\"code\":\"1\",\"msg\":\"未登录或登录超时。请重新登录\"}"; if("zh_CN".equals(lang)){ noLogin = "{\"code\":\"1\",\"msg\":\"未登录或登录超时。请重新登录\"}"; }else if("en_US".equals(lang)){ noLogin = "{\"code\":\"1\",\"msg\":\"Time out. Please log in again.\"}"; } if (ServletUtils.isAjaxRequest(request)) { return ServletUtils.renderString(response, noLogin); } System.out.println(String.format("【当前版本:%s】",active)); if(active.contains("online")) { return "login_online"; } return "login"; } @PostMapping("/login") @ResponseBody public AjaxResult ajaxLogin(String username, String password, Boolean rememberMe) { try { byte[] bytes = "db2139561c9fe068".getBytes(); byte[] data = Hex.decodeHex(password.toCharArray()); byte[] s = DecryptUtil.AES_CBC_Decrypt(data, bytes, bytes); password = new String(s); } catch (Exception e) { e.printStackTrace(); } UsernamePasswordToken token = new UsernamePasswordToken(username, password, rememberMe); Subject subject = SecurityUtils.getSubject(); try { subject.login(token); return success(); } catch (AuthenticationException e) { String msg = "用户或密码错误"; if (StringUtils.isNotEmpty(e.getMessage())) { msg = e.getMessage(); } return error(msg); } } @GetMapping("/unauth") public String unauth() { return "error/unauth"; } }