从后台跳转到前台
@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);
}
}
}