前后台跳转

从后台跳转到前台

@Value("${server.path}") //获取properties中的配置信息
	private String serverPath;


<div style="display: none;">
	<input id="serverPath" type="hidden" value="${serverPath!''}"/>
	<input id="codeWord" type="hidden" value="${codeWord!''}"/>
</div>


function jumpToHomePage(){
	var servthPath = $("#serverPath").val();
	var codeWord = $("#codeWord").val();	
	var url = servthPath+"view/gateWayLoginCheck.html?codeWord="+codeWord;
	window.open(url);
}

gateWayLoginCheck.html

<script type="text/javascript">
var codeWord = getQueryString("codeWord");
var menuCode = getQueryString("menuCode");
if(codeWord){
	var href = window.location.href.split("view/gateWayLoginCheck.html")[0];
	var url = href+"gateWayLoginCheck?codeWord="+codeWord;
	window.location.href=url;
}
function getQueryString(name) {
	debugger;
	var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); 
	var r = window.location.search.substr(1).match(reg); 
	if (r != null) return unescape(r[2]); return null; 
} 
</script>

跳转controller

	@RequestMapping(value = "/gateWayLoginCheck")
	public String gateWayLoginCheck(HttpServletRequest request, String codeWord) {
		try {
			if (StringUtil.isEmpty(codeWord)) {
				return "跳转登录失败";
			}
			String codeWords = ComUtils.getDecodedBase64(codeWord);
			String[] codeWordArray = codeWords.split(":");
			if (codeWordArray.length != 2) {
				return "跳转登录失败";
			}
			String userCode = codeWordArray[0];
			String password = codeWordArray[1];
			/*if(!StringUtil.isEmpty(userCode) && !"cnten".equals(userCode) && !"admin".equals(userCode)) 
			{
			userCode = ComUtils.getDecodedBase64(userCode);
		    }*/
			String sender = userCode + password;
			String EncryptedStr = MD5Util.MD5Encrypted(sender);
			String str = userService.checkUser(userCode);
			if (LoginConstant.LOGIN_USER_NOTEXIST_CODE.equals(str)) { // 用户不存在
				return LoginConstant.LOGIN_NOTEXIST_STRING;
			}
			if (str == LoginConstant.LOGIN_USER_INVALID_CODE) { // 无效用户
				return LoginConstant.LOGIN_USER_INVALID_STRING;
			}
			if (str == LoginConstant.LOGIN_USER_LOCKED_CODE) { // 锁定用户
				return LoginConstant.LOGIN_USER_LOCKED_STRING;
			}
			if (EncryptedStr.equals(str)) {
				if(request.getSession().getAttribute(LoginConstant.LOGIN_USER_SESSION_KEY)==null) {
					User user = userService.getUserByCode(userCode);
					user.setUserPass(password);
					request.getSession(true).setAttribute(LoginConstant.LOGIN_USER_SESSION_KEY, user);
				}
				ThreadContextHolder.setHttpRequest(request); // 将当前登录 Request 放入线程变量
				return "redirect:/gateway/main?codeWord=" + codeWord;
			} else { // 用户密码错误
				return "用户名或密码错误";
			}
		} finally {
		}
	}

从前台跳转到后台

function jumpToBackstage(menuCode){
	debugger;
	var servthPath = $("#serverPath").val();
	var codeWord = $("#codeWord").val();	
	var url = servthPath+"view/loginCheck.html?codeWord="+codeWord;
	if(menuCode){
		url = url+"&menuCode="+menuCode;
	}
	window.open(url);
}

后台

package com.cnten.platform.system.login.controller;

import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class LoginController {
	private static final Logger log = LoggerFactory.getLogger(LoginController.class);
	@Autowired
	UserService userService;
	@Autowired
	LogService logService;

	@RequestMapping(value = "/login", method = RequestMethod.GET)
	public void login(HttpServletRequest request) {
		request.getSession().removeAttribute(LoginConstant.LOGIN_USER_SESSION_KEY);
		request.getSession().invalidate();
	}

	/**
	 * 登录验证
	 * 
	 * @param request
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "/loginCheck", method = RequestMethod.POST)
	public AssembleJSON loginCheck(HttpServletRequest request) {
		try {
//			String idNumber = null;
			String userCode = request.getParameter("userCode");
			String sender = request.getParameter("userCode") + request.getParameter("password");
			String EncryptedStr = MD5Util.MD5Encrypted(sender);
//			if ("admin".equalsIgnoreCase(userCode) || "cnten".equalsIgnoreCase(userCode)) {
//				idNumber = userCode;
//			} else {
//				idNumber = ImpExcelUtils.getEncodedBase64(userCode);
//			}
			String str = userService.checkUser(userCode);
			if (LoginConstant.LOGIN_USER_NOTEXIST_CODE.equals(str)) { // 用户不存在
				return AssembleJSON.SUCCESS(Integer.valueOf(LoginConstant.LOGIN_USER_NOTEXIST_CODE),
						LoginConstant.LOGIN_NOTEXIST_STRING);
			}
			if (str == LoginConstant.LOGIN_USER_INVALID_CODE) { // 无效用户
				return AssembleJSON.SUCCESS(Integer.valueOf(LoginConstant.LOGIN_USER_INVALID_CODE),
						LoginConstant.LOGIN_USER_INVALID_STRING);
			}
			if (str == LoginConstant.LOGIN_USER_LOCKED_CODE) { // 锁定用户
				return AssembleJSON.SUCCESS(Integer.valueOf(LoginConstant.LOGIN_USER_LOCKED_CODE),
						LoginConstant.LOGIN_USER_LOCKED_STRING);
			}
			String verifyCode = request.getParameter("verifyCode");
			String code = (String) request.getSession().getAttribute("verCode");
			if (null == code) { // 验证码过期
				return AssembleJSON.SUCCESS(Integer.valueOf(LoginConstant.LOGIN_VERIFYCODE_OUTDATE_CODE),
						LoginConstant.LOGIN_VERIFYCODE_OUTDATE_STRING);
			}
			if (null != code && verifyCode.toLowerCase().equals(code.toLowerCase())) {
				if (EncryptedStr.equals(str)) {
					User user = userService.getUserByCode(userCode);
					request.getSession(true).setAttribute(LoginConstant.LOGIN_USER_SESSION_KEY, user);
					ThreadContextHolder.setHttpRequest(request); // 将当前登录 Request 放入线程变量
				
					return AssembleJSON.SUCCESS(user);
				} else { // 用户密码错误
					return checkLoginNum(request,userCode);
				}
			} else { // 验证码错误
				return AssembleJSON.SUCCESS(Integer.valueOf(LoginConstant.LOGIN_VERIFYCODE_ERROR_CODE),
						LoginConstant.LOGIN_VERIFYCODE_ERROR_STRING);
			}
		}finally{
			try {
				User user = (User) request.getSession().getAttribute(LoginConstant.LOGIN_USER_SESSION_KEY);
				if(user != null) {
					Log log = new Log();
					log.setLogUserCode(user.getIdNumber());
					log.setLogUserName(user.getUserName());
					log.setLogType(Constant.LOG_TYPE_LOGIN);
					log.setLogTime(new Date());
					log.setLogIp(request.getRemoteAddr());
					logService.insertLog(log);			// 添加登录记录到系统日志表
				 }
				}catch(Exception e) {
					log.error(e.getMessage());
				}
			}
	}

	/**
	 * 校验用户登陆次数
	 */
	private AssembleJSON checkLoginNum(HttpServletRequest request,String userCode) {
		HttpSession httpSession = request.getSession();
		if (httpSession.getAttribute(userCode) != null) {
			Integer loginNum = (Integer) httpSession.getAttribute(userCode);
			//还有两次机会
			if (loginNum == 2) {
				httpSession.setAttribute(userCode,loginNum+1);
				return AssembleJSON.SUCCESS(Integer.valueOf(LoginConstant.LOGIN_USERPWD_ERROR_CODE),
						LoginConstant.LOGIN_WARN_NUM_STRING);
			} 
			//冻结账号
			else if (loginNum == 4) {
				User user =	userService.getUserByCode(userCode);
				user.setState(LoginConstant.LOGIN_USER_STATE_LOCKED);
				userService.saveUser(user);
				return AssembleJSON.SUCCESS(Integer.valueOf(LoginConstant.LOGIN_USER_LOCKED_CODE),
						LoginConstant.LOGIN_USER_LOCKED_STRING);
			}  else {
				httpSession.setAttribute(userCode,loginNum+1);
				return AssembleJSON.SUCCESS(Integer.valueOf(LoginConstant.LOGIN_USERPWD_ERROR_CODE),
						LoginConstant.LOGIN_USERPWD_ERROR_STRING);
			}
		} else {
			httpSession.setAttribute(userCode, 1);
			return AssembleJSON.SUCCESS(Integer.valueOf(LoginConstant.LOGIN_USERPWD_ERROR_CODE),
					LoginConstant.LOGIN_USERPWD_ERROR_STRING);
		}

	}

}

猜你喜欢

转载自blog.csdn.net/qq_35029061/article/details/81807560
今日推荐