Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
X
xzxt-solr
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
常超
xzxt-solr
Commits
020a6f4a
Commit
020a6f4a
authored
Mar 12, 2020
by
cc150520900118
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加超时登录认证功能
parent
c96c7f58
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
298 additions
and
4 deletions
+298
-4
pom.xml
+28
-0
src/main/java/com/cc/HandlerInterceptor/SystemSessionInterceptor.java
+53
-0
src/main/java/com/cc/controller/LoginController.java
+40
-1
src/main/java/com/cc/dao/LoginDao.java
+1
-0
src/main/java/com/cc/service/LoginService.java
+1
-1
src/main/java/com/cc/service/impl/LoginServiceImpl.java
+7
-0
src/main/resources/mapper/xzxt/Login.xml
+16
-1
src/main/resources/spring-mvc.xml
+13
-1
src/main/webapp/WEB-INF/web.xml
+3
-0
src/main/webapp/rasc.jsp
+2
-0
src/main/webapp/relogin.jsp
+18
-0
src/main/webapp/resultlogin.jsp
+44
-0
src/main/webapp/static/js/ajax.js
+72
-0
No files found.
pom.xml
View file @
020a6f4a
...
...
@@ -11,6 +11,34 @@
<spring.version>
4.2.6.RELEASE
</spring.version>
<mybatis.version>
3.4.1
</mybatis.version>
</properties>
<!-- 公司的maven仓库 -->
<repositories>
<repository>
<id>
founder
</id>
<url>
http://47.92.108.28:8081/nexus/content/groups/public/
</url>
<releases>
<enabled>
true
</enabled>
</releases>
<snapshots>
<enabled>
true
</enabled>
</snapshots>
</repository>
</repositories>
<!-- 指定maven plugin仓库 -->
<pluginRepositories>
<!-- 公司的maven plugin仓库 -->
<pluginRepository>
<id>
founder
</id>
<url>
http://47.92.108.28:8081/nexus/content/groups/public/
</url>
<releases>
<enabled>
true
</enabled>
</releases>
<snapshots>
<enabled>
true
</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
<dependencies>
<dependency>
<groupId>
org.springframework
</groupId>
...
...
src/main/java/com/cc/HandlerInterceptor/SystemSessionInterceptor.java
0 → 100644
View file @
020a6f4a
package
com
.
cc
.
HandlerInterceptor
;
import
org.springframework.web.servlet.HandlerInterceptor
;
import
org.springframework.web.servlet.ModelAndView
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpSession
;
/**
* Created by changchao on 2020/3/11.
*/
public
class
SystemSessionInterceptor
implements
HandlerInterceptor
{
private
static
final
String
LOGIN_URL
=
"/relogin.jsp"
;
@Override
public
void
postHandle
(
HttpServletRequest
request
,
HttpServletResponse
response
,
Object
handler
,
ModelAndView
modelAndView
)
throws
Exception
{
}
@Override
public
void
afterCompletion
(
HttpServletRequest
request
,
HttpServletResponse
response
,
Object
handler
,
Exception
ex
)
throws
Exception
{
}
@Override
public
boolean
preHandle
(
HttpServletRequest
request
,
HttpServletResponse
response
,
Object
handler
)
throws
Exception
{
//不是ajax请求,则直接跳转页面
HttpSession
session
=
request
.
getSession
(
true
);
//session中获取用户名信息
Object
obj
=
session
.
getAttribute
(
"user"
);
if
(
obj
==
null
||
""
.
equals
(
obj
.
toString
()))
{
//如果判断是 AJAX 请求,直接设置为session超时
if
(
request
.
getHeader
(
"x-requested-with"
)!=
null
&&
request
.
getHeader
(
"x-requested-with"
).
equalsIgnoreCase
(
"XMLHttpRequest"
)){
//是ajax请求,则返回个消息给前台
response
.
setHeader
(
"sessionstatus"
,
"timeout"
);
}
else
{
//不是ajax请求,则直接跳转页面
//超时登录
response
.
sendRedirect
(
request
.
getSession
().
getServletContext
().
getContextPath
()
+
LOGIN_URL
);
return
false
;
}
}
return
true
;
}
}
\ No newline at end of file
src/main/java/com/cc/controller/LoginController.java
View file @
020a6f4a
package
com
.
cc
.
controller
;
import
com.cc.model.Drsconfig
;
import
com.cc.db.InfoDao
;
import
com.cc.framework.WordsTpye
;
import
com.cc.model.Drsconfig
;
import
com.cc.model.User
;
import
com.cc.service.GasjzyfwService
;
import
com.cc.service.LoginService
;
...
...
@@ -10,9 +10,13 @@ import org.slf4j.Logger;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.ui.ModelMap
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
sun.misc.BASE64Encoder
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.util.HashMap
;
...
...
@@ -116,4 +120,39 @@ public class LoginController {
}
return
returnMap
;
}
//调用登录后台 返回resultlogin页面,登录成功即自动关闭;
@RequestMapping
(
value
=
"/relogin"
,
method
=
{
RequestMethod
.
POST
,
RequestMethod
.
GET
})
public
String
retoHome
(
HttpServletRequest
request
,
@RequestParam
(
"username"
)
String
username
,
@RequestParam
(
"password"
)
String
password
,
ModelMap
map
){
//Map<String,Object> returnMap=new HashMap<>();
User
user
=
null
;
user
=(
User
)
request
.
getSession
().
getAttribute
(
"user"
);
if
(
user
==
null
){
//进行登录
try
{
User
yuser
=
loginService
.
queryUserByUsername
(
username
);
if
(
yuser
!=
null
){
BASE64Encoder
encoder
=
new
BASE64Encoder
();
String
ypassword
=
encoder
.
encode
(
password
.
getBytes
());
if
(
ypassword
.
equals
(
yuser
.
getPassword
())){
user
=
yuser
;
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
map
.
addAttribute
(
"state"
,
"error"
);
map
.
addAttribute
(
"msg"
,
"登录异常!"
);
return
"resultlogin"
;
}
}
if
(
user
!=
null
){
request
.
getSession
().
setAttribute
(
"user"
,
user
);
//登录成功生成session
String
sid
=
request
.
getSession
().
getId
();
map
.
addAttribute
(
"state"
,
"success"
);
map
.
addAttribute
(
"msg"
,
"登陆成功!"
);
map
.
addAttribute
(
"sid"
,
sid
);
}
else
{
map
.
addAttribute
(
"state"
,
"failed"
);
map
.
addAttribute
(
"msg"
,
"用户名或密码错误!"
);
}
return
"resultlogin"
;
}
}
src/main/java/com/cc/dao/LoginDao.java
View file @
020a6f4a
...
...
@@ -10,4 +10,5 @@ import org.springframework.stereotype.Component;
public
interface
LoginDao
{
public
User
queryUserById
(
String
id
);
public
User
queryUserByUsername
(
String
Username
);
}
src/main/java/com/cc/service/LoginService.java
View file @
020a6f4a
...
...
@@ -8,5 +8,5 @@ import com.cc.model.User;
public
interface
LoginService
{
public
User
getUserById
(
String
id
);
public
User
queryUserByUsername
(
String
Username
);
}
src/main/java/com/cc/service/impl/LoginServiceImpl.java
View file @
020a6f4a
...
...
@@ -21,4 +21,11 @@ public class LoginServiceImpl implements LoginService {
user
=
loginDao
.
queryUserById
(
id
);
return
user
;
}
@Override
public
User
queryUserByUsername
(
String
Username
)
{
User
user
=
null
;
user
=
loginDao
.
queryUserByUsername
(
Username
);
return
user
;
}
}
src/main/resources/mapper/xzxt/Login.xml
View file @
020a6f4a
...
...
@@ -17,5 +17,19 @@
TQYHBZ as tqyhbz from SYS_USER where 1=1
and identitycard=#{id}
</select>
<select
id=
"queryUserByUsername"
resultType=
"com.cc.model.User"
parameterType=
"string"
>
select UNITCODE as unitcode,
USERNAME as username,
TRUE_NAME as trueName,
IDENTITYCARD as identitycard,
PASSWORD as password,
SEX as sex,
BIRTHDAY as birthday,
TELEPHONE as telephone,
UNITNAME as unitname,
GRADE as grade,
POLICEMANID as policemanid,
TQYHBZ as tqyhbz from SYS_USER where 1=1
and username=#{username}
</select>
</mapper>
\ No newline at end of file
src/main/resources/spring-mvc.xml
View file @
020a6f4a
...
...
@@ -14,9 +14,20 @@
<!-- 对转向页面的路径解析。prefix:前缀, suffix:后缀 -->
<bean
class=
"org.springframework.web.servlet.view.InternalResourceViewResolver"
>
<property
name=
"redirectContextRelative"
value=
"true"
></property>
<property
name=
"prefix"
value=
"/
WEB-INF/views/
"
></property>
<property
name=
"prefix"
value=
"/"
></property>
<property
name=
"suffix"
value=
".jsp"
></property>
</bean>
<mvc:default-servlet-handler/>
<mvc:annotation-driven/>
<!-- Session失效拦截 -->
<mvc:interceptors>
<!-- 定义拦截器 -->
<mvc:interceptor>
<!-- 匹配的是url路径, 如果不配置或/**,将拦截所有的Controller -->
<mvc:mapping
path=
"/**"
/>
<!-- 不需要拦截的地址 -->
<mvc:exclude-mapping
path=
"/relogin"
/>
<bean
class=
"com.cc.HandlerInterceptor.SystemSessionInterceptor"
></bean>
</mvc:interceptor>
</mvc:interceptors>
</beans>
\ No newline at end of file
src/main/webapp/WEB-INF/web.xml
View file @
020a6f4a
...
...
@@ -97,4 +97,7 @@
<listener>
<listener-class>
org.springframework.web.util.Log4jConfigListener
</listener-class>
</listener>
<session-config>
<session-timeout>
1
</session-timeout>
</session-config>
</web-app>
src/main/webapp/rasc.jsp
View file @
020a6f4a
...
...
@@ -43,8 +43,10 @@
<script
type=
"text/javascript"
src=
"static/dy/js/guide_xq.js"
></script>
<script
type=
"text/javascript"
src=
"static/layer/layer.js"
></script>
<script
type=
"text/javascript"
src=
"static/rasc/js/ychy.js"
></script>
<script
type=
"text/javascript"
src=
"static/js/ajax.js"
></script>
<!--水印-->
<script
src=
"static/js/watermark.js"
></script>
<style>
.textbox
.textbox-text
{
height
:
24px
!important
;
...
...
src/main/webapp/relogin.jsp
0 → 100644
View file @
020a6f4a
<
%@
page
language=
"java"
contentType=
"text/html; charset=UTF-8"
pageEncoding=
"UTF-8"
%
>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta
http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
>
<title>
登陆界面
</title>
</head>
<body>
<script
type=
"text/javascript"
src=
"static/js/ajax.js"
></script>
<form
action=
"/relogin"
method=
"post"
>
username:
<input
type=
"text"
name=
"username"
><br
/>
Password:
<input
type=
"password"
name=
"password"
><br
/>
<input
type=
"submit"
value=
"登陆"
>
</form>
</body>
</html>
\ No newline at end of file
src/main/webapp/resultlogin.jsp
0 → 100644
View file @
020a6f4a
<
%@
page
language=
"java"
contentType=
"text/html; charset=UTF-8"
pageEncoding=
"UTF-8"
%
>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta
http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
>
<title>
登录结果
</title>
</head>
<body>
<span
id=
"time"
>
登录状态:"${state}"
</span><br>
<script
type=
"text/javascript"
src=
"static/easyui-window/js/jquery-1.11.3.js"
></script>
<script
type=
"text/javascript"
>
//定义函数myClose关闭当前窗口
function
myClose
(){
//将id为time的元素的内容转为整数,保存在变量n中
//var n=parseInt(time.innerHTML);
debugger
;
var
n
=
1
;
n
--
;
//将n-1
//如果n==0,关闭页面
//否则, 将n+秒钟后自动关闭,再保存回time的内容中
if
(
n
>
0
){
time
.
innerHTML
=
n
+
"秒钟后自动关闭"
;
timer
=
setTimeout
(
myClose
,
1000
);
}
else
{
window
.
location
.
href
=
"about:blank"
;
window
.
close
();
}
}
var
timer
=
null
;
//当页面加载后,启动周期性定时器,每个1秒执行myClose
window
.
onload
=
function
(){
var
state
=
"${state}"
;
if
(
state
==
"success"
){
debugger
;
timer
=
setTimeout
(
myClose
,
1000
);
}
}
</script>
</body>
</html>
\ No newline at end of file
src/main/webapp/static/js/ajax.js
0 → 100644
View file @
020a6f4a
/**
* 设置未来(全局)的AJAX请求默认选项
* 主要设置了AJAX请求遇到Session过期的情况
*/
$
.
ajaxSetup
({
type
:
'POST'
,
complete
:
function
(
xhr
,
status
)
{
var
sessionStatus
=
xhr
.
getResponseHeader
(
'sessionstatus'
);
if
(
sessionStatus
==
'timeout'
)
{
//var top = getTopWinow();
//var tempwindow=window.open('_blank');
var
yes
=
confirm
(
'由于您长时间没有操作, session已过期, 请重新登录.'
);
if
(
yes
)
{
//tempwindow.location.href = '/relogin.jsp';
openWin
(
'/relogin.jsp'
,
'用户登录'
,
'8.5'
,
'7.5'
);
}
}
}
});
/**
* 在页面中任何嵌套层次的窗口中获取顶层窗口
* @return 当前页面的顶层窗口对象
*/
function
getTopWinow
(){
var
p
=
window
;
while
(
p
!=
p
.
parent
){
p
=
p
.
parent
;
}
return
p
;
}
//name 弹窗名字
//width 弹窗宽度(比例)
//height 弹窗高度(比例)
var
myWindow
;
function
openWin
(
url
,
name
,
width
,
height
)
{
debugger
;
var
w_percent
=
width
?
width
:
9
;
//如果参数未传,则取9
var
h_percent
=
height
?
height
:
8
;
var
widths
=
(
window
.
screen
.
availWidth
)
*
w_percent
/
10
;
var
heights
=
(
window
.
screen
.
availHeight
)
*
h_percent
/
10
;
var
iLeft
=
(
window
.
screen
.
availWidth
-
widths
)
/
2
;
var
iTop
=
(
window
.
screen
.
availHeight
-
heights
)
/
2
;
//判断是否为IE
var
b_version
=
navigator
.
appVersion
;
var
version
=
b_version
.
split
(
";"
);
if
(
version
[
1
]){
var
trim_Version
=
version
[
1
].
replace
(
/
[
]
/g
,
""
);
}
if
(
trim_Version
==
'MSIE9.0'
||
trim_Version
==
'MSIE10.0'
||
trim_Version
==
'WOW64'
||
trim_Version
==
'MSIE7.0'
){
//IE浏览器,直接打开
myWindow
=
window
.
open
(
url
,
name
,
'scrollbars=yes,width='
+
widths
+
',height='
+
heights
+
',left='
+
iLeft
+
',top='
+
iTop
+
''
);
myWindow
.
focus
();
}
else
{
//非IE,判断窗口是否存在,若存在,则关闭当前窗口,重新打开
if
(
myWindow
){
myWindow
.
close
();
myWindow
=
null
;
}
debugger
;
myWindow
=
window
.
open
(
url
,
name
,
'scrollbars=yes,width='
+
widths
+
',height='
+
heights
+
',left='
+
iLeft
+
',top='
+
iTop
+
''
);
}
//弹窗名字重命名ss
var
title
=
name
;
setTimeout
(
function
()
{
myWindow
.
document
.
title
=
title
;
},
1000
);
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment