Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
X
xyqb-user2
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
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
head_group
xyqb-user2
Commits
ff1a2d14
Commit
ff1a2d14
authored
May 10, 2018
by
技术部-任文超
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
重构RequestFilter,保持原有逻辑,并纠正带状态(依赖session)接口判定范围
parent
7119b76f
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
27 additions
and
25 deletions
+27
-25
RequestFilter.java
src/main/java/cn/quantgroup/xyqb/filter/RequestFilter.java
+27
-25
No files found.
src/main/java/cn/quantgroup/xyqb/filter/RequestFilter.java
View file @
ff1a2d14
...
@@ -25,10 +25,13 @@ import java.util.Objects;
...
@@ -25,10 +25,13 @@ import java.util.Objects;
@Component
@Component
public
class
RequestFilter
implements
Filter
{
public
class
RequestFilter
implements
Filter
{
private
static
final
String
[]
ALLOWED_PATTERNS
=
{
/**
"/wechat/**"
,
"/config/**"
,
"/api/**"
,
"/query/**"
,
"/user_detail/**"
,
"/hello/**"
,
"/innerapi/**"
,
"/app/**"
,
"/motan/**"
,
"/user/**"
,
"/lock/**"
,
* 带状态
"/auth/info/login"
,
"/platform/api/page/return_url"
,
"/MP_verify_AWiagUn4kZiwmTt0.txt"
,
"/tech/health/check"
*/
};
private
static
final
String
[]
ALLOWED_PATTERNS
=
{
"/auth/info/login"
,
"/platform/api/page/next"
};
/**
* 带状态请求鉴权失败时的响应信息
*/
private
static
final
String
UNAUTH_RESULT
=
JSONObject
.
toJSONString
(
JsonResult
.
buildErrorStateResult
(
"登录失败"
,
null
));
private
static
final
String
UNAUTH_RESULT
=
JSONObject
.
toJSONString
(
JsonResult
.
buildErrorStateResult
(
"登录失败"
,
null
));
@Autowired
@Autowired
private
ISessionService
sessionService
;
private
ISessionService
sessionService
;
...
@@ -42,38 +45,37 @@ public class RequestFilter implements Filter {
...
@@ -42,38 +45,37 @@ public class RequestFilter implements Filter {
public
void
doFilter
(
ServletRequest
servletRequest
,
ServletResponse
servletResponse
,
FilterChain
filterChain
)
throws
IOException
,
ServletException
{
public
void
doFilter
(
ServletRequest
servletRequest
,
ServletResponse
servletResponse
,
FilterChain
filterChain
)
throws
IOException
,
ServletException
{
HttpServletRequest
request
=
(
HttpServletRequest
)
servletRequest
;
HttpServletRequest
request
=
(
HttpServletRequest
)
servletRequest
;
HttpServletResponse
response
=
(
HttpServletResponse
)
servletResponse
;
HttpServletResponse
response
=
(
HttpServletResponse
)
servletResponse
;
String
requestPath
=
getRequestPath
(
request
);
// 带状态接口
SessionStruct
sessionStruct
;
if
(
isMatch
(
request
)){
if
(!
isMatch
(
requestPath
))
{
// 需获取session信息
//获取session信息,如果没有获取到session信息则返回错误信息
SessionStruct
sessionStruct
=
XyqbSessionContextHolder
.
getXSessionFromRedis
();
sessionStruct
=
XyqbSessionContextHolder
.
getXSessionFromRedis
();
if
(
Objects
.
isNull
(
sessionStruct
))
{
if
(
sessionStruct
==
null
)
{
/* 如果没有获取到session信息则返回错误信息 */
response
.
setStatus
(
401
);
response
.
setStatus
(
401
);
response
.
setHeader
(
"Content-Type"
,
"application/json;charset=utf-8"
);
response
.
setHeader
(
"Content-Type"
,
"application/json;charset=utf-8"
);
PrintWriter
writer
=
response
.
getWriter
();
PrintWriter
writer
=
response
.
getWriter
();
writer
.
print
(
UNAUTH_RESULT
);
writer
.
print
(
UNAUTH_RESULT
);
writer
.
close
();
writer
.
close
();
return
;
return
;
}
}
else
{
try
{
/* 延续session生命期 */
filterChain
.
doFilter
(
request
,
response
);
try
{
}
finally
{
sessionService
.
persistSession
(
sessionStruct
.
getSid
(),
sessionStruct
.
getValues
());
sessionStruct
=
XyqbSessionContextHolder
.
getXSessionFromRedis
();
}
finally
{
if
(
sessionStruct
!=
null
)
{
XyqbSessionContextHolder
.
releaseSession
();
try
{
sessionService
.
persistSession
(
sessionStruct
.
getSid
(),
sessionStruct
.
getValues
());
}
finally
{
XyqbSessionContextHolder
.
releaseSession
();
}
}
}
}
}
}
else
{
filterChain
.
doFilter
(
request
,
response
);
}
}
filterChain
.
doFilter
(
request
,
response
);
}
}
private
boolean
isMatch
(
String
path
)
{
/**
* 判断是否带状态请求
* @param request
* @return
*/
private
boolean
isMatch
(
HttpServletRequest
request
)
{
String
path
=
getRequestPath
(
request
);
for
(
String
pattern
:
ALLOWED_PATTERNS
)
{
for
(
String
pattern
:
ALLOWED_PATTERNS
)
{
if
(
matcher
.
match
(
pattern
,
path
))
{
if
(
matcher
.
match
(
pattern
,
path
))
{
return
true
;
return
true
;
...
...
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