Bläddra i källkod

登录登出使用同一接口

ting.yin 6 år sedan
förälder
incheckning
005cef46b6

+ 42 - 150
stmms-web/src/main/java/cn/com/qmth/stmms/common/controller/LoginController.java

@@ -5,7 +5,6 @@ import java.util.Date;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Controller;
@@ -14,14 +13,12 @@ import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.servlet.ModelAndView;
 
-import cn.com.qmth.stmms.biz.exam.model.MarkGroup;
 import cn.com.qmth.stmms.biz.exam.model.Marker;
 import cn.com.qmth.stmms.biz.exam.service.MarkGroupService;
 import cn.com.qmth.stmms.biz.exam.service.MarkerService;
 import cn.com.qmth.stmms.biz.user.model.User;
 import cn.com.qmth.stmms.biz.user.service.UserService;
 import cn.com.qmth.stmms.common.domain.WebUser;
-import cn.com.qmth.stmms.common.enums.MarkStatus;
 import cn.com.qmth.stmms.common.enums.Role;
 import cn.com.qmth.stmms.common.session.model.StmmsSession;
 import cn.com.qmth.stmms.common.utils.Md5EncryptUtils;
@@ -41,22 +38,29 @@ public class LoginController {
 
     @Value("${index.logo}")
     private String indexLogo;
+    
+    private static final String LOGIN_TYPE_KEY = "loginType";
 
     @RequestMapping("/")
     public ModelAndView index(HttpServletRequest request) {
-        return new ModelAndView("index");
+        return new ModelAndView("redirect:/login");
     }
 
     @RequestMapping(value = "/login", method = RequestMethod.GET)
     public ModelAndView login(HttpServletRequest request) {
+    	StmmsSession session = RequestUtils.getSession(request);
+        session.setParameter(LOGIN_TYPE_KEY,null);
         ModelAndView view = new ModelAndView("modules/sys/login");
         view.addObject("indexLogo", indexLogo);
+        view.addObject("showType", "admin-login");
         return view;
     }
 
     @RequestMapping(value = "/login", method = RequestMethod.POST)
-    public ModelAndView login(User user, String loginType, HttpServletRequest request, HttpServletResponse response) {
-        if (loginType.equals("admin-login")) {
+    public ModelAndView login(User user, @RequestParam(required=false)String showType, HttpServletRequest request, HttpServletResponse response) {
+    	StmmsSession session = RequestUtils.getSession(request);
+        String loginType = session.getParameter(LOGIN_TYPE_KEY);
+    	if ("admin-login".equals(showType)||"admin-login".equals(loginType)) {
             User u = userService.findByLoginName(user.getLoginName());
             if (u != null) {
                 if (u.getPassword().equals(Md5EncryptUtils.md5(user.getPassword()))) {
@@ -64,7 +68,6 @@ public class LoginController {
                     u.setLastLoginIp(request.getRemoteAddr());
                     userService.save(u);
 
-                    StmmsSession session = RequestUtils.getSession(request);
                     new WebUser(u.getId(), u.getRole()).writeToSession(session);
 
                     if (u.getRole() == Role.SYS_ADMIN || u.getRole() == Role.SCHOOL_ADMIN
@@ -74,37 +77,37 @@ public class LoginController {
                     } else {
                         ModelAndView view = new ModelAndView("modules/sys/login");
                         view.addObject("message", "用户没有访问权限");
-                        view.addObject("loginType", loginType);
+                        view.addObject("showType", showType);
                         view.addObject("indexLogo", indexLogo);
                         return view;
                     }
                 } else {
                     ModelAndView modelAndView = new ModelAndView("modules/sys/login");
                     modelAndView.addObject("message", "密码错误");
-                    modelAndView.addObject("loginType", loginType);
+                    modelAndView.addObject("showType", showType);
                     modelAndView.addObject("indexLogo", indexLogo);
                     return modelAndView;
                 }
             } else {
                 ModelAndView modelAndView = new ModelAndView("modules/sys/login");
                 modelAndView.addObject("message", "无此用户");
-                modelAndView.addObject("loginType", loginType);
+                modelAndView.addObject("showType", showType);
                 modelAndView.addObject("indexLogo", indexLogo);
                 return modelAndView;
             }
-        } else if (loginType.equals("mark-login")) {
+        } else if ("mark-login".equals(showType)||"mark-login".equals(loginType)) {
             Marker marker = markerService.findByLoginName(user.getLoginName());
             if (marker != null) {
                 ModelAndView modelAndView = new ModelAndView("modules/sys/login");
                 if (!marker.getPassword().equals(user.getPassword())) {
                     modelAndView.addObject("message", "密码错误");
-                    modelAndView.addObject("loginType", loginType);
+                    modelAndView.addObject("showType", showType);
                     modelAndView.addObject("indexLogo", indexLogo);
                     return modelAndView;
                 }
                 if (marker.isEnable() == false) {
                     modelAndView.addObject("message", "帐号已禁用");
-                    modelAndView.addObject("loginType", loginType);
+                    modelAndView.addObject("showType", showType);
                     modelAndView.addObject("indexLogo", indexLogo);
                     return modelAndView;
                 }
@@ -123,12 +126,12 @@ public class LoginController {
 
             ModelAndView view = new ModelAndView("modules/sys/login");
             view.addObject("message", "帐号不存在");
-            view.addObject("loginType", loginType);
+            view.addObject("showType", showType);
             view.addObject("indexLogo", indexLogo);
             return view;
         } else {
             ModelAndView view = new ModelAndView("modules/sys/login");
-            view.addObject("loginType", loginType);
+            view.addObject("showType", showType);
             view.addObject("indexLogo", indexLogo);
             return view;
         }
@@ -136,53 +139,22 @@ public class LoginController {
 
     @RequestMapping(value = "/admin-login", method = RequestMethod.GET)
     public ModelAndView adminIndex(HttpServletRequest request) {
-        // StmmsSession session = RequestUtils.getSession(request);
-        // if (StringUtils.isNotBlank(session.getParameter("userId"))) {
-        // return new ModelAndView("modules/sys/examIndex");
-        // } else {
-        return new ModelAndView("modules/sys/sysLogin");
-        // }
+    	StmmsSession session = RequestUtils.getSession(request);
+    	session.setParameter(LOGIN_TYPE_KEY, "admin-login");
+    	ModelAndView view = new ModelAndView("modules/sys/login");
+        view.addObject(LOGIN_TYPE_KEY, "admin-login");
+        view.addObject("indexLogo", indexLogo);
+        return view;
     }
-
-    /**
-     * 登录
-     * 
-     * @param user
-     * @param request
-     * @param response
-     * @return
-     */
-    @RequestMapping(value = "/admin-login", method = RequestMethod.POST)
-    public ModelAndView adminLogin(User user, HttpServletRequest request, HttpServletResponse response) {
-        User u = userService.findByLoginName(user.getLoginName());
-        if (u != null) {
-            if (u.getPassword().equals(Md5EncryptUtils.md5(user.getPassword()))) {
-                u.setLastLoginTime(new Date());
-                u.setLastLoginIp(request.getRemoteAddr());
-                userService.save(u);
-
-                StmmsSession session = RequestUtils.getSession(request);
-                new WebUser(u.getId(), u.getRole()).writeToSession(session);
-
-                if (u.getRole() == Role.SYS_ADMIN || u.getRole() == Role.SCHOOL_ADMIN
-                        || u.getRole() == Role.SUBJECT_HEADER || u.getRole() == Role.SCHOOL_VIEWER) {
-                    ModelAndView modelAndView = new ModelAndView("redirect:admin/home");
-                    return modelAndView;
-                } else {
-                    ModelAndView view = new ModelAndView("modules/sys/sysLogin");
-                    view.addObject("message", "用户没有访问权限");
-                    return view;
-                }
-            } else {
-                ModelAndView modelAndView = new ModelAndView("modules/sys/sysLogin");
-                modelAndView.addObject("message", "密码错误");
-                return modelAndView;
-            }
-        } else {
-            ModelAndView modelAndView = new ModelAndView("modules/sys/sysLogin");
-            modelAndView.addObject("message", "无此用户");
-            return modelAndView;
-        }
+    
+    @RequestMapping(value = "/mark-login", method = RequestMethod.GET)
+    public ModelAndView markIndex(HttpServletRequest request) {
+    	StmmsSession session = RequestUtils.getSession(request);
+    	session.setParameter(LOGIN_TYPE_KEY, "mark-login");
+    	ModelAndView view = new ModelAndView("modules/sys/login");
+        view.addObject(LOGIN_TYPE_KEY, "mark-login");
+        view.addObject("indexLogo", indexLogo);
+        return view;
     }
 
     /**
@@ -193,98 +165,18 @@ public class LoginController {
      * @param response
      * @return
      */
-    @RequestMapping("/admin-logout")
+    @RequestMapping("/logout")
     public ModelAndView adminLogout(HttpServletRequest request, HttpServletResponse response) {
+        StmmsSession session = RequestUtils.getSession(request);
+        String loginType = session.getParameter(LOGIN_TYPE_KEY);
         RequestUtils.getSession(request).setInvalid(true);
-        return new ModelAndView("redirect:/admin-login");
-    }
-
-    /**
-     * 评卷员登录初始化
-     * 
-     * @param request
-     * @return
-     */
-    @RequestMapping(value = "/mark-login", method = RequestMethod.GET)
-    public ModelAndView loginInit(HttpServletRequest request, @RequestParam(required = false) String message) {
-        ModelAndView modelAndView = new ModelAndView("modules/sys/markLogin");
-        modelAndView.addObject("message", StringUtils.trimToNull(message));
-        return modelAndView;
-    }
-
-    /**
-     * 评卷员登录
-     * 
-     * @param request
-     * @param loginType
-     * @param examId
-     * @param code
-     * @param password
-     * @return
-     */
-    @RequestMapping(value = "/mark-login", method = RequestMethod.POST)
-    public ModelAndView login(HttpServletRequest request, @RequestParam String loginName,
-            @RequestParam String password) {
-        Marker marker = markerService.findByLoginName(loginName);
-        if (marker != null) {
-            return markerLogin(request, marker, password);
-        }
-
-        ModelAndView view = new ModelAndView("modules/sys/markLogin");
-        view.addObject("message", "帐号不存在");
-        return view;
-    }
-
-    /**
-     * 评卷员登录
-     * 
-     * @param marker
-     * @param request
-     * @param response
-     * @return
-     */
-    public ModelAndView markerLogin(HttpServletRequest request, Marker marker, String password) {
-        ModelAndView modelAndView = new ModelAndView("modules/sys/markLogin");
-        if (!marker.getPassword().equals(password)) {
-            modelAndView.addObject("message", "密码错误");
-            return modelAndView;
-        }
-        if (marker.isEnable() == false) {
-            modelAndView.addObject("message", "帐号已禁用");
-            return modelAndView;
-        }
-        MarkGroup group = groupService.findOne(marker.getExamId(), marker.getSubjectCode(), marker.getGroupNumber());
-        if (group == null) {
-            modelAndView.addObject("message", "大题不存在");
-            return modelAndView;
-        }
-        if (group.getStatus() == MarkStatus.FINISH) {
-            modelAndView.addObject("message", "评卷已结束");
-            return modelAndView;
-        }
-
-        new WebUser(marker.getId(), Role.MARKER).writeToSession(RequestUtils.getSession(request));
-
-        if (marker.getLastLoginTime() == null) {
-            return new ModelAndView("redirect:/mark/reset");
-        } else {
-            marker.setLastLoginTime(new Date());
-            marker.setLastLoginIp(request.getRemoteAddr());
-            markerService.save(marker);
+        if("admin-login".equals(loginType)){
+        	return new ModelAndView("redirect:/admin-login");
+        }else if("mark-login".equals(loginType)){
+        	return new ModelAndView("redirect:/mark-login");
+        }else{
+        	return new ModelAndView("redirect:/login");
         }
-        return new ModelAndView("redirect:/mark/index");
     }
 
-    /**
-     * 评卷员登出
-     * 
-     * @param request
-     * @param response
-     * @return
-     */
-    @RequestMapping("/mark-logout")
-    public ModelAndView markerLogout(HttpServletRequest request, HttpServletResponse response) {
-        RequestUtils.getSession(request).setInvalid(true);
-        return new ModelAndView("redirect:/mark-login");
-    }
 }

+ 1 - 1
stmms-web/src/main/java/cn/com/qmth/stmms/mark/MarkController.java

@@ -161,7 +161,7 @@ public class MarkController extends BaseController {
     public ModelAndView logout(HttpServletRequest request) {
         Marker marker = RequestUtils.getWebUser(request).getMarker();
         markService.releaseByMarker(marker);
-        return new ModelAndView("redirect:/mark-logout");
+        return new ModelAndView("redirect:/logout");
     }
 
     /**

+ 1 - 1
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/examIndex.jsp

@@ -70,7 +70,7 @@
 				      <li><a href="${ctx}/admin/account/modifyPwd" target="mainFrame"><i class="icon-lock"></i>&nbsp; 修改密码</a></li>
 				    </ul>
 			  	 </li>
-			  	 <li><a href="${ctx}/admin-logout" title="退出登录">退出</a></li>
+			  	 <li><a href="${ctx}/logout" title="退出登录">退出</a></li>
 			  	 <li>&nbsp;</li>
 	           </ul>
 	         </div><!--/.nav-collapse -->

+ 1 - 1
stmms-web/src/main/webapp/WEB-INF/views/modules/mark/reset.jsp

@@ -106,7 +106,7 @@
                 </div>
                 <div class="footer">
                     <input class="btn btn-primary" type="submit" id="submit-button" value="确 定"/>
-                    <a href="${ctx}/mark-logout" class="btn">退 出</a>
+                    <a href="${ctx}/logout" class="btn">退 出</a>
                 </div>
             </form>
         </div>

+ 1 - 1
stmms-web/src/main/webapp/WEB-INF/views/modules/mark/subjectSelect.jsp

@@ -74,7 +74,7 @@
                 </div>
                 <div class="footer">
                     <input class="btn btn-primary" type="submit" id="submit-button" value="确 定"/>
-                    <a href="${ctx}/mark-logout" class="btn">退 出</a>
+                    <a href="${ctx}/logout" class="btn">退 出</a>
                 </div>
             </form>
         </div>

+ 10 - 15
stmms-web/src/main/webapp/WEB-INF/views/modules/sys/login.jsp

@@ -9,27 +9,18 @@
     <link rel="icon" href="${ctxStatic}/favicon.png" type="image/x-icon">
 	<script type="text/javascript">
 		$(document).ready(function() {
-			$("#loginType").hide();
+			$("#showType").hide();
 			$("#adminLogin").click(function() {
 				$("#adminLogin").addClass("on");
 				$("#markLogin").removeClass("on");
-				$("#loginType").attr("value","admin-login");
+				$("#showType").attr("value","admin-login");
 			});
 			$("#markLogin").click(function() {
 				$("#markLogin").addClass("on");
 				$("#adminLogin").removeClass("on");
-				$("#loginType").attr("value","mark-login");
-			});
-			$("#loginForm").validate({
-				messages: {
-					username: {required: "请填写用户名."},password: {required: "请填写密码."},
-				}
+				$("#showType").attr("value","mark-login");
 			});
 		});
-		// 如果在框架中,则跳转刷新上级页面
-		if(self.frameElement && self.frameElement.tagName=="IFRAME"){
-			parent.location.reload();
-		}
 	</script>
 </head>
 <body>
@@ -42,12 +33,16 @@
    <div class="right">
      <div class="title">
        <h1>高校考试管理平台</h1>
-       <p><span><a href="#" class="<c:if test="${loginType == 'admin-login' ||loginType==null}">on</c:if>" id="adminLogin">管理员登录</a></span>
-       	<span><a href="#" class="<c:if test="${loginType == 'mark-login' }">on</c:if>" id="markLogin">评卷员登录</a></span></p>
+       <c:if test="${loginType == 'admin-login' }"><p>管理员登录</p></c:if>
+       <c:if test="${loginType == 'mark-login' }"><p>评卷员登录</p></c:if>
+       <c:if test="${loginType == null || loginType == '' }">
+       <p><span><a href="#" class="<c:if test="${showType == 'admin-login' ||showType==null}">on</c:if>" id="adminLogin">管理员登录</a></span>
+       	<span><a href="#" class="<c:if test="${showType == 'mark-login' }">on</c:if>" id="markLogin">评卷员登录</a></span></p>
+       </c:if>
      </div>
      <div class="loginbox">
       <form action="${ctx}/login" method="post" role="form" id="loginForm">
-      	<input id ="loginType" name ="loginType" value="${loginType }" />
+      	<input id ="showType" name ="showType" value="${showType}" />
         <div class="input-group">
         	<input type="text" class="form-control required" id="loginName" name="loginName" placeholder="请输入用户名" autocomplete="off" value="${loginName }"/>
         </div>

+ 0 - 62
stmms-web/src/main/webapp/WEB-INF/views/modules/sys/markLogin.jsp

@@ -1,62 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" %>
-<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
-<html>
-<head>
-	<title>登录</title>
-	<meta name="decorator" content="default"/>
-	<%@include file="/WEB-INF/views/include/head.jsp" %>
-    <link rel="stylesheet" href="${ctxStatic}/common/login.css">
-    <link rel="icon" href="${ctxStatic}/favicon.png" type="image/x-icon">
-	<script type="text/javascript">
-		$(document).ready(function() {
-			$("#loginForm").validate({
-				rules: {
-					validateCode: {remote: "${pageContext.request.contextPath}/servlet/validateCodeServlet"}
-				},
-				messages: {
-					username: {required: "请填写用户名."},password: {required: "请填写密码."},
-					validateCode: {remote: "验证码不正确.", required: "请填写验证码."}
-				},
-				errorLabelContainer: "#messageBox",
-				errorPlacement: function(error, element) {
-					error.appendTo($("#loginError").parent());
-				} 
-			});
-		});
-		// 如果在框架中,则跳转刷新上级页面
-		if(self.frameElement && self.frameElement.tagName=="IFRAME"){
-			parent.location.reload();
-		}
-	</script>
-</head>
-<body>
-<div class="container">
-  <div class="middle cl">
-   <div class="left">
-    <div class="logo"><img src="${ctxStatic}/images/logo@2x.png"/></div>
-    <p>Copyright &#169武汉启明软件 2012-2014</p>
-   </div>
-   <div class="right">
-     <div class="title">
-       <h1>高校考试管理平台</h1>
-       <p>评卷员登录</p>
-     </div>
-     <div class="loginbox">
-      <form action="${ctx}/mark-login" method="post" role="form" id="loginForm">
-        <div class="input-group">
-        	<input type="text" class="form-control required" id="loginName" name="loginName" placeholder="请输入用户ID" autocomplete="off" value="${loginName }"/>
-        </div>
-        <div class="input-group">
-        	<input type="password" class="form-control required" id="password" name="password" placeholder="请输入密码" autocomplete="off"/>
-        </div>
-        <div class="point <c:if test="${message != null }"></c:if><c:if test="${message == null }">hide</c:if>">
-        <em class="error">${message }</em>
-        </div>
-        <div class="login-btn"><input class="opacity" type="submit" "submit" value="登 录"/></div>
-      </form>
-     </div>
-   </div>
-  </div>
-</div>
-</body>
-</html>

+ 1 - 1
stmms-web/src/main/webapp/WEB-INF/views/modules/sys/sysIndex.jsp

@@ -70,7 +70,7 @@
 				      <li><a href="${ctx}/admin/account/modifyPwd" target="mainFrame"><i class="icon-lock"></i>&nbsp;  修改密码</a></li>
 				    </ul>
 			  	 </li>
-			  	 <li><a href="${ctx}/admin-logout" title="退出登录">退出</a></li>
+			  	 <li><a href="${ctx}/logout" title="退出登录">退出</a></li>
 			  	 <li>&nbsp;</li>
 	           </ul>
 	         </div><!--/.nav-collapse -->

+ 0 - 62
stmms-web/src/main/webapp/WEB-INF/views/modules/sys/sysLogin.jsp

@@ -1,62 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" %>
-<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
-<html>
-<head>
-	<title>登录</title>
-	<meta name="decorator" content="default"/>
-	<%@include file="/WEB-INF/views/include/head.jsp" %>
-    <link rel="stylesheet" href="${ctxStatic}/common/login.css">
-    <link rel="icon" href="${ctxStatic}/favicon.png" type="image/x-icon">
-	<script type="text/javascript">
-		$(document).ready(function() {
-			$("#loginForm").validate({
-				rules: {
-					validateCode: {remote: "${pageContext.request.contextPath}/servlet/validateCodeServlet"}
-				},
-				messages: {
-					username: {required: "请填写用户名."},password: {required: "请填写密码."},
-					validateCode: {remote: "验证码不正确.", required: "请填写验证码."}
-				},
-				errorLabelContainer: "#messageBox",
-				errorPlacement: function(error, element) {
-					error.appendTo($("#loginError").parent());
-				} 
-			});
-		});
-		// 如果在框架中,则跳转刷新上级页面
-		if(self.frameElement && self.frameElement.tagName=="IFRAME"){
-			parent.location.reload();
-		}
-	</script>
-</head>
-<body>
-<div class="container">
-  <div class="middle cl">
-   <div class="left">
-    <div class="logo"><img src="${ctxStatic}/images/logo@2x.png"/></div>
-    <p>Copyright &#169武汉启明软件 2012-2014</p>
-   </div>
-   <div class="right">
-     <div class="title">
-       <h1>高校考试管理平台</h1>
-       <p>管理员登录</p>
-     </div>
-     <div class="loginbox">
-      <form action="${ctx}/admin-login" method="post" role="form" id="loginForm">
-        <div class="input-group">
-        	<input type="text" class="form-control required" id="loginName" name="loginName" placeholder="请输入用户ID" autocomplete="off" value="${loginName }"/>
-        </div>
-        <div class="input-group">
-        	<input type="password" class="form-control required" id="password" name="password" placeholder="请输入密码" autocomplete="off"/>
-        </div>
-        <div class="point <c:if test="${message != null }"></c:if><c:if test="${message == null }">hide</c:if>">
-        <em class="error">${message }</em>
-        </div>
-        <div class="login-btn"><input class="opacity" type="submit" "submit" value="登 录"/></div>
-      </form>
-     </div>
-   </div>
-  </div>
-</div>
-</body>
-</html>

+ 14 - 2
stmms-web/src/main/webapp/static/common/login.css

@@ -8,6 +8,7 @@
 	-webkit-box-sizing: border-box;
 	box-sizing: border-box;
 	font-family: "微软雅黑";
+	text-decoration: none;
 }
 html, body {
 	height: 100%;
@@ -144,6 +145,10 @@ input {
 	color: #4E9FE2;
 	border-bottom: 2px solid #66AEE9;
 }
+a:hover, a:focus, a:focus-within,a:active, a:visited{
+	text-decoration: none!important;
+	outline:none;
+}
 /*input*/
 .input-group {
 	width: 100%;
@@ -159,17 +164,21 @@ input {
 	-moz-border-radius: 8px;
 	-webkit-border-radius: 8px;
 	border-radius: 8px;
+	-webkit-box-shadow: none;
+	box-shadow: none;
+	transition: none!important;
 }
 .input-group input:focus {
 	outline: 0;
+	border: 1px solid #E2E5EB;
 	-webkit-box-shadow: 0px 10px 15px 0px rgba(203,205,211,.1);
 	-moz-box-shadow: 0px 10px 15px 0px rgba(203,205,211,.1);
 	box-shadow: 0px 10px 15px 0px rgba(203,205,211,.1);
 }
-input#userid {
+input#loginName {
 	background: url(../images/userid.png) no-repeat 20px 50%;
 }
-input#userid:focus {
+input#loginName:focus {
 	background: url(../images/userid-on.png) no-repeat 20px 50% #FFF;
 }
 input#password {
@@ -179,6 +188,9 @@ input#password {
 input#password:focus {
 	background: url(../images/password-on.png) no-repeat 20px 50% #FFF;
 }
+input:-internal-autofill-selected{
+	background: none!important;
+}
 /*point*/
 .point {
 	height: 16px;