Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
guns-vip
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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
chenjunxiong
guns-vip
Commits
c6e0febc
Commit
c6e0febc
authored
Feb 01, 2018
by
stylefeng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优化session超时问题
parent
7a92ee98
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
35 additions
and
49 deletions
+35
-49
guns-admin/src/main/java/com/stylefeng/guns/core/intercept/GunsUserFilter.java
+34
-3
guns-admin/src/main/java/com/stylefeng/guns/core/intercept/SessionHolderInterceptor.java
+1
-1
guns-admin/src/main/java/com/stylefeng/guns/core/intercept/SessionTimeoutInterceptor.java
+0
-45
No files found.
guns-admin/src/main/java/com/stylefeng/guns/core/intercept/GunsUserFilter.java
View file @
c6e0febc
...
@@ -18,11 +18,15 @@
...
@@ -18,11 +18,15 @@
*/
*/
package
com
.
stylefeng
.
guns
.
core
.
intercept
;
package
com
.
stylefeng
.
guns
.
core
.
intercept
;
import
com.stylefeng.guns.core.shiro.ShiroKit
;
import
org.apache.shiro.subject.Subject
;
import
org.apache.shiro.subject.Subject
;
import
org.apache.shiro.web.filter.AccessControlFilter
;
import
org.apache.shiro.web.filter.AccessControlFilter
;
import
org.apache.shiro.web.util.WebUtils
;
import
javax.servlet.ServletRequest
;
import
javax.servlet.ServletRequest
;
import
javax.servlet.ServletResponse
;
import
javax.servlet.ServletResponse
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
/**
/**
* Filter that allows access to resources if the accessor is a known user, which is defined as
* Filter that allows access to resources if the accessor is a known user, which is defined as
...
@@ -63,12 +67,39 @@ public class GunsUserFilter extends AccessControlFilter {
...
@@ -63,12 +67,39 @@ public class GunsUserFilter extends AccessControlFilter {
* execute.
* execute.
*/
*/
protected
boolean
onAccessDenied
(
ServletRequest
request
,
ServletResponse
response
)
throws
Exception
{
protected
boolean
onAccessDenied
(
ServletRequest
request
,
ServletResponse
response
)
throws
Exception
{
HttpServletRequest
httpServletRequest
=
WebUtils
.
toHttp
(
request
);
HttpServletResponse
httpServletResponse
=
WebUtils
.
toHttp
(
response
);
/**
/**
*
让请求继续执行,直到走到SessionTimeoutInterceptor
*
如果是ajax请求则不进行跳转
*/
*/
if
(
httpServletRequest
.
getHeader
(
"x-requested-with"
)
!=
null
&&
httpServletRequest
.
getHeader
(
"x-requested-with"
).
equalsIgnoreCase
(
"XMLHttpRequest"
))
{
httpServletResponse
.
setHeader
(
"sessionstatus"
,
"timeout"
);
return
false
;
}
else
{
/**
* 第一次点击页面
*/
String
referer
=
httpServletRequest
.
getHeader
(
"Referer"
);
if
(
referer
==
null
)
{
saveRequestAndRedirectToLogin
(
request
,
response
);
return
false
;
}
else
{
//saveRequestAndRedirectToLogin(request, response);
/**
return
true
;
* 从别的页面跳转过来的
*/
if
(
ShiroKit
.
getSession
().
getAttribute
(
"sessionFlag"
)
==
null
)
{
httpServletRequest
.
setAttribute
(
"tips"
,
"session超时"
);
httpServletRequest
.
getRequestDispatcher
(
"/login.html"
).
forward
(
request
,
response
);
return
false
;
}
else
{
saveRequestAndRedirectToLogin
(
request
,
response
);
return
false
;
}
}
}
}
}
}
}
guns-admin/src/main/java/com/stylefeng/guns/core/intercept/SessionInterceptor.java
→
guns-admin/src/main/java/com/stylefeng/guns/core/intercept/Session
Holder
Interceptor.java
View file @
c6e0febc
...
@@ -16,7 +16,7 @@ import org.springframework.stereotype.Component;
...
@@ -16,7 +16,7 @@ import org.springframework.stereotype.Component;
*/
*/
@Aspect
@Aspect
@Component
@Component
public
class
SessionInterceptor
extends
BaseController
{
public
class
Session
Holder
Interceptor
extends
BaseController
{
@Pointcut
(
"execution(* com.stylefeng.guns.*..controller.*.*(..))"
)
@Pointcut
(
"execution(* com.stylefeng.guns.*..controller.*.*(..))"
)
public
void
cutService
()
{
public
void
cutService
()
{
...
...
guns-admin/src/main/java/com/stylefeng/guns/core/intercept/SessionTimeoutInterceptor.java
deleted
100644 → 0
View file @
7a92ee98
package
com
.
stylefeng
.
guns
.
core
.
intercept
;
import
com.stylefeng.guns.core.base.controller.BaseController
;
import
com.stylefeng.guns.core.shiro.ShiroKit
;
import
com.stylefeng.guns.core.support.HttpKit
;
import
org.apache.shiro.session.InvalidSessionException
;
import
org.aspectj.lang.ProceedingJoinPoint
;
import
org.aspectj.lang.annotation.Around
;
import
org.aspectj.lang.annotation.Aspect
;
import
org.aspectj.lang.annotation.Pointcut
;
import
org.springframework.core.annotation.Order
;
import
org.springframework.stereotype.Component
;
/**
* 验证session超时的拦截器
*
* @author fengshuonan
* @date 2017年6月7日21:08:48
*/
@Aspect
@Component
@Order
(
100
)
public
class
SessionTimeoutInterceptor
extends
BaseController
{
@Pointcut
(
"execution(* com.stylefeng.guns.*..controller.*.*(..))"
)
public
void
cutService
()
{
}
@Around
(
"cutService()"
)
public
Object
sessionTimeoutValidate
(
ProceedingJoinPoint
point
)
throws
Throwable
{
String
servletPath
=
HttpKit
.
getRequest
().
getServletPath
();
if
(
servletPath
.
equals
(
"/kaptcha"
)
||
servletPath
.
equals
(
"/login"
)
||
servletPath
.
equals
(
"/global/sessionError"
))
{
return
point
.
proceed
();
}
else
{
if
(
ShiroKit
.
getSession
().
getAttribute
(
"sessionFlag"
)
==
null
){
ShiroKit
.
getSubject
().
logout
();
throw
new
InvalidSessionException
();
}
else
{
return
point
.
proceed
();
}
}
}
}
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