main
tamguo 7 years ago
parent bb7afddd41
commit b353876b48

@ -1,20 +1,31 @@
package com.tamguo.config; package com.tamguo.config;
import java.util.Properties; import java.util.Properties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import com.google.code.kaptcha.impl.DefaultKaptcha; import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config; import com.google.code.kaptcha.util.Config;
import com.tamguo.modules.sys.interceptor.SettingsInterceptor;
@Configuration @Configuration
public class WebConfig implements WebMvcConfigurer { public class WebConfig implements WebMvcConfigurer {
@Value("${file.storage.path}") @Value("${file.storage.path}")
private String fileStoragePath; private String fileStoragePath;
@Autowired
private SettingsInterceptor settingsInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(settingsInterceptor).addPathPatterns("/**");
}
@Override @Override
public void addResourceHandlers(ResourceHandlerRegistry registry) { public void addResourceHandlers(ResourceHandlerRegistry registry) {

@ -80,12 +80,12 @@ public class ShiroConfiguration {
filterChainDefinitionMap.put("/my97/**", "anon"); filterChainDefinitionMap.put("/my97/**", "anon");
filterChainDefinitionMap.put("/select2/**", "anon"); filterChainDefinitionMap.put("/select2/**", "anon");
filterChainDefinitionMap.put("/sysLogin/**", "anon"); filterChainDefinitionMap.put("/sysLogin/**", "anon");
filterChainDefinitionMap.put("/sysIndex/**", "anon");
filterChainDefinitionMap.put("/validCode", "anon"); filterChainDefinitionMap.put("/validCode", "anon");
filterChainDefinitionMap.put("/checkCode", "anon");
filterChainDefinitionMap.put("/wdScrollTab/**", "anon"); filterChainDefinitionMap.put("/wdScrollTab/**", "anon");
filterChainDefinitionMap.put("/jquery-timeago/**", "anon"); filterChainDefinitionMap.put("/jquery-timeago/**", "anon");
// filterChainDefinitionMap.put("/**", "authc"); filterChainDefinitionMap.put("/**", "authc");
shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap); shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
return shiroFilterFactoryBean; return shiroFilterFactoryBean;
} }

@ -0,0 +1,39 @@
package com.tamguo.modules.sys.interceptor;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.tamguo.modules.sys.utils.Setting;
@Component
public class SettingsInterceptor implements HandlerInterceptor {
@Resource
private Setting setting;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
//在请求处理之前进行调用Controller方法调用之前
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
// 设置系统变量
request.setAttribute("setting", setting);
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
//在整个请求结束之后被调用也就是在DispatcherServlet 渲染了对应的视图之后执行(主要是用于进行资源清理工作)
}
}

@ -15,6 +15,11 @@ public final class Setting {
/** 域名 */ /** 域名 */
@Value(value="${domain.name}") @Value(value="${domain.name}")
public String domain; public String domain;
/** 静态资源地址*/
@Value(value="${static.domain}")
public String staticDomain;
@Value(value="${version}")
public String version;
/** 真题 */ /** 真题 */
public final String PAPER_TYPE_ZHENTI = "1"; public final String PAPER_TYPE_ZHENTI = "1";
/** 模拟*/ /** 模拟*/

@ -11,6 +11,7 @@ import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.google.code.kaptcha.Constants; import com.google.code.kaptcha.Constants;
import com.google.code.kaptcha.Producer; import com.google.code.kaptcha.Producer;
@ -36,4 +37,14 @@ public class ValidCodeController {
ImageIO.write(image, "jpg", out); ImageIO.write(image, "jpg", out);
} }
@RequestMapping("checkCode")
@ResponseBody
public Boolean checkCode(String validCode) throws ServletException, IOException {
String kaptcha = ShiroUtils.getKaptcha(Constants.KAPTCHA_SESSION_KEY);
if (!validCode.equalsIgnoreCase(kaptcha)) {
return true;
}
return false;
}
} }

@ -1,4 +1,6 @@
domain.name=http://localhost/ domain.name=http://localhost/
static.domain=http://localhost/
version=V1.0.0
server.port=80 server.port=80
jasypt.encryptor.password=tamguo jasypt.encryptor.password=tamguo

@ -1,7 +1,27 @@
/*! $("#username, #password").on("focus blur", function() {
* Copyright (c) 2013-Now http://jeesite.com All rights reserved. var a = this;
* setTimeout(function() {
* @author ThinkGem var b = $(a).css("borderColor");
* @version 2017-4-18 if (b != "") {
*/ $(a).prev().css("color", b)
$("#username, #password").on("focus blur",function(){var a=this;setTimeout(function(){var b=$(a).css("borderColor");if(b!=""){$(a).prev().css("color",b)}},100)}).blur();$("#loginForm").validate({submitHandler:function(c){var d=$("#username").val(),a=$("#password").val(),b=$("#validCode").val();if(secretKey!=""){$("#username").val(DesUtils.encode(d,secretKey));$("#password").val(DesUtils.encode(a,secretKey));$("#validCode").val(DesUtils.encode(b,secretKey))}js.ajaxSubmitForm($(c),function(f,e,g){if(f.isValidCodeLogin==true){$("#isValidCodeLogin").show();$("#validCodeRefresh").click()}if(f.result=="false"&&f.message.length>0){js.showMessage(f.message)}else{js.loading($("#btnSubmit").data("loading"));location=ctx+"/index"}},"json",true,$("#btnSubmit").data("loginValid"));$("#username").val(d);$("#password").val(a).select().focus();$("#validCode").val(b)}}); }
}, 100)
}).blur();
$("#loginForm").validate({
submitHandler: function(c) {
var d = $("#username").val()
, a = $("#password").val()
, b = $("#validCode").val();
js.ajaxSubmitForm($(c), function(f, e, g) {
if (f.result == "false" && f.message.length > 0) {
js.showMessage(f.message)
} else {
js.loading($("#btnSubmit").data("loading"));
location = ctx + "/index"
}
}, "json", true, $("#btnSubmit").data("loginValid"));
$("#username").val(d);
$("#password").val(a).select().focus();
$("#validCode").val(b)
}
});

@ -1,44 +1,38 @@
<!DOCTYPE html> <!DOCTYPE html SYSTEM "http://www.thymeleaf.org/dtd/xhtml1-strict-thymeleaf-4.dtd">
<html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta content="webkit" name="renderer" /> <meta content="webkit" name="renderer" />
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="keywords" content="PoweredByJeeSiteV4.0" /> <meta name="keywords" content="PoweredByTamguoV1.0.0" />
<meta http-equiv="Cache-Control" <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
content="no-cache, no-store, must-revalidate" /> <meta name="description" content="PoweredByTamguoV1.0.0" />
<meta name="description" content="PoweredByJeeSiteV4.0" />
<meta content="no-cache" http-equiv="Pragma" /> <meta content="no-cache" http-equiv="Pragma" />
<meta http-equiv="Expires" content="0" /> <meta http-equiv="Expires" content="0" />
<meta content="width=device-width, initial-scale=1, user-scalable=1" <meta content="width=device-width, initial-scale=1, user-scalable=1" name="viewport" />
name="viewport" />
<title>登录 - Tamguo OMS</title> <title>登录 - Tamguo OMS</title>
<script src="jquery/jquery-1.12.4.min.js"></script> <script th:src="${setting.staticDomain + 'jquery/jquery-1.12.4.min.js'}"></script>
<script src="jquery/jquery-migrate-1.4.1.min.js"></script> <script th:src="${setting.staticDomain + 'jquery/jquery-migrate-1.4.1.min.js'}"></script>
<!--[if lt IE 9]><script src="common/h5fix.min.js"></script><![endif]--> <!--[if lt IE 9]><script src="common/h5fix.min.js"></script><![endif]-->
<link rel="stylesheet" href="fonts/font-icons.min.css"> <link rel="stylesheet" th:href="${setting.staticDomain + 'fonts/font-icons.min.css'}">
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css"> <link rel="stylesheet" th:href="${setting.staticDomain + 'bootstrap/css/bootstrap.min.css'}">
<link rel="stylesheet" href="select2/4.0/select2.css"> <link rel="stylesheet" th:href="${setting.staticDomain + 'select2/4.0/select2.css'}">
<link rel="stylesheet" href="icheck/1.0/minimal/grey.css"> <link rel="stylesheet" th:href="${setting.staticDomain + 'icheck/1.0/minimal/grey.css'}">
<link rel="stylesheet" href="adminlte/css/AdminLTE.min.css"> <link rel="stylesheet" th:href="${setting.staticDomain + 'adminlte/css/AdminLTE.min.css'}">
<link rel="stylesheet" href="common/jeesite.css"> <link rel="stylesheet" th:href="${setting.staticDomain + 'common/jeesite.css'}">
<link rel="stylesheet" href="common/common.css"> <link rel="stylesheet" th:href="${setting.staticDomain + 'common/common.css'}">
</head> </head>
<body class="hold-transition login-page"> <body class="hold-transition login-page">
<div class="wrapper"> <div class="wrapper">
<!--[if lte IE 9]><a style="position:absolute;top:0;left:0;z-index:100000;display:block;width:100%;font-size:14px;color:#F00;text-decoration:none;background-color:#faffb3;text-align:center;" <link rel="stylesheet" th:href="${setting.staticDomain + 'icheck/1.0/square/blue.css'}">
href="upbw/index.html" target="_blank">您的浏览器版本过低或在兼容模式下,导致打开速度过慢,提升速度您可以切换到极速模式或升级为最新版,点击此处查看详情。</a><![endif]--> <link rel="stylesheet" th:href="${setting.staticDomain + 'jquery-toastr/2.0/toastr.min.css'}">
<!--[if lte IE 8]><script>window.location.href='upbw/index.html?url='+location.href;</script><![endif]--> <link rel="stylesheet" th:href="${setting.staticDomain + 'modules/sys/sysLogin.css'}">
<link rel="stylesheet" href="icheck/1.0/square/blue.css">
<link rel="stylesheet"
href="jquery-toastr/2.0/toastr.min.css">
<link rel="stylesheet" href="modules/sys/sysLogin.css">
<div class="login-box"> <div class="login-box">
<div class="login-logo"> <div class="login-logo">
<a href="/a/login"><b>JeeSite Demo</b> <small>V4.0</small></a> <a th:href="${setting.domain}"><b>TamGuo OMS</b> <small th:text="${setting.version}">1.0.0</small></a>
</div> </div>
<div class="login-box-body"> <div class="login-box-body">
<form id="loginForm" action="/a/login" method="post"> <form id="loginForm" action="sys/login" method="post">
<div class="form-group has-feedback"> <div class="form-group has-feedback">
<span class="glyphicon glyphicon-user form-control-feedback" <span class="glyphicon glyphicon-user form-control-feedback"
title="登录账号"></span> <input type="text" id="username" title="登录账号"></span> <input type="text" id="username"
@ -55,12 +49,11 @@ href="upbw/index.html" target="_blank">您的浏览器版本过低或在兼容
placeholder="登录密码" autocomplete="off" /> placeholder="登录密码" autocomplete="off" />
</div> </div>
<div class="form-group has-feedback" id="isValidCodeLogin"> <div class="form-group has-feedback" id="isValidCodeLogin">
<div class="input-group"> <div class="input-group">
<span class="input-group-addon">验证码:</span> <input type="text" <span class="input-group-addon">验证码:</span> <input type="text"
id="validCode" name="validCode" class="form-control" id="validCode" name="validCode" class="form-control"
required="true" data-msg-required="请填写验证码" required="true" data-msg-required="请填写验证码"
remote="/validCode" data-msg-remote="验证码不正确." /> <span th:remote="${setting.domain + 'checkCode'}" data-msg-remote="验证码不正确." /> <span
class="input-group-addon p0"> <img id="validCodeImg" class="input-group-addon p0"> <img id="validCodeImg"
class="validCodeImg" title="看不清,点击图片刷新" src="" alt="验证码" class="validCodeImg" title="看不清,点击图片刷新" src="" alt="验证码"
style="width: 100px;" /> style="width: 100px;" />
@ -98,9 +91,7 @@ href="upbw/index.html" target="_blank">您的浏览器版本过低或在兼容
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<button type="submit" class="btn btn-primary btn-block btn-flat" <button type="submit" class="btn btn-primary btn-block btn-flat" id="btnSubmit" data-loading="登录验证成功,正在进入..." data-login-valid="正在验证登录,请稍后...">立即登录</button>
id="btnSubmit" data-loading="登录验证成功,正在进入..."
data-login-valid="正在验证登录,请稍后...">立即登录</button>
</div> </div>
</form> </form>
<div class="row"> <div class="row">
@ -110,28 +101,25 @@ href="upbw/index.html" target="_blank">您的浏览器版本过低或在兼容
</div> </div>
</div> </div>
<div class="login-copyright"> <div class="login-copyright">
&copy; 2018 JeeSite Demo - Powered By <a href="http://jeesite.com">JeeSite &copy; 2018 TamGuo OMS - Powered By <a href="http://www.tamguo.com" th:text="${'TamGuo OMS' + setting.version}">TamGuo
V4.0.5</a> </a>
</div> </div>
</div> </div>
</div> </div>
<a id="scroll-up" href="#" class="btn btn-sm"><i <a id="scroll-up" href="#" class="btn btn-sm"><i class="fa fa-angle-double-up"></i></a>
class="fa fa-angle-double-up"></i></a> <script th:src="${setting.staticDomain + 'bootstrap/js/bootstrap.min.js'}"></script>
<script src="bootstrap/js/bootstrap.min.js"></script> <script th:src="${setting.staticDomain + 'select2/4.0/select2.js'}"></script>
<script src="select2/4.0/select2.js"></script> <script th:src="${setting.staticDomain + 'select2/4.0/i18n/zh_CN.js'}"></script>
<script src="select2/4.0/i18n/zh_CN.js"></script> <script th:src="${setting.staticDomain + 'layer/3.1/layer.js'}"></script>
<script src="layer/3.1/layer.js"></script> <script th:src="${setting.staticDomain + 'my97/WdatePicker.js'}"></script>
<script src="my97/WdatePicker.js"></script> <script th:src="${setting.staticDomain + 'jquery-validation/1.16/jquery.validate.js'}"></script>
<script src="jquery-validation/1.16/jquery.validate.js"></script> <script th:src="${setting.staticDomain + 'jquery-validation/1.16/localization/messages_zh_CN.js'}"></script>
<script <script th:src="${setting.staticDomain + 'jquery-validation/1.16/jquery.validate.extend.js'}"></script>
src="jquery-validation/1.16/localization/messages_zh_CN.js"></script> <script th:src="${setting.staticDomain + 'common/jeesite.js'}"></script>
<script <script th:src="${setting.staticDomain + 'common/i18n/jeesite_zh_CN.js'}"></script>
src="jquery-validation/1.16/jquery.validate.extend.js"></script> <script th:src="${setting.staticDomain + 'common/common.js'}"></script>
<script src="common/jeesite.js"></script> <script>var secretKey = 'tamguo,tamguo,com';</script>
<script src="common/i18n/jeesite_zh_CN.js"></script> <script th:src="${setting.staticDomain + 'jquery-toastr/2.0/toastr.min.js'}"></script>
<script src="common/common.js"></script> <script th:src="${setting.staticDomain + 'common/des.js'}"></script>
<script>var secretKey = 'thinkgem,jeesite,com';</script> <script th:src="${setting.staticDomain + 'modules/sys/sysLogin.js'}"></script>
<script src="jquery-toastr/2.0/toastr.min.js"></script>
<script src="common/des.js"></script>
<script src="modules/sys/sysLogin.js"></script>
Loading…
Cancel
Save