Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gic-enterprise-base
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
base_platform_enterprise
gic-enterprise-base
Commits
ce8125f4
Commit
ce8125f4
authored
Sep 05, 2019
by
陶光胜
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
init
parent
8fd51e6c
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
115 additions
and
43 deletions
+115
-43
RequestContext.java
.../main/java/com/gic/enterprise/context/RequestContext.java
+32
-0
UserContext.java
...src/main/java/com/gic/enterprise/context/UserContext.java
+68
-0
UserDetailFilter.java
...main/java/com/gic/enterprise/filter/UserDetailFilter.java
+2
-1
UserDetailUtils.java
...c/main/java/com/gic/enterprise/utils/UserDetailUtils.java
+3
-38
AuthInterceptor.java
.../java/com/gic/enterprise/interceptor/AuthInterceptor.java
+7
-0
RequestInteceptor.java
...ava/com/gic/enterprise/interceptor/RequestInteceptor.java
+3
-4
No files found.
gic-enterprise-base-api/src/main/java/com/gic/enterprise/context/RequestContext.java
0 → 100644
View file @
ce8125f4
package
com
.
gic
.
enterprise
.
context
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
public
class
RequestContext
{
private
ThreadLocal
<
HttpServletRequest
>
requestThreadLocal
=
new
ThreadLocal
<>();
private
ThreadLocal
<
HttpServletResponse
>
responseThreadLocal
=
new
ThreadLocal
<>();
private
static
RequestContext
requestContext
=
new
RequestContext
();
public
static
RequestContext
getContext
(){
return
requestContext
;
}
public
void
init
(
HttpServletRequest
request
,
HttpServletResponse
response
){
requestThreadLocal
.
set
(
request
);
responseThreadLocal
.
set
(
response
);
}
public
void
destroy
(){
requestThreadLocal
.
remove
();
responseThreadLocal
.
remove
();
}
public
HttpServletRequest
getRequest
(){
return
requestThreadLocal
.
get
();
}
public
HttpServletResponse
getResponse
(){
return
responseThreadLocal
.
get
();
}
}
gic-enterprise-base-api/src/main/java/com/gic/enterprise/context/UserContext.java
0 → 100644
View file @
ce8125f4
package
com
.
gic
.
enterprise
.
context
;
import
com.gic.commons.util.ToolUtil
;
import
com.gic.enterprise.constants.Constants
;
import
com.gic.enterprise.utils.UserDetail
;
import
com.gic.redis.data.util.RedisUtil
;
import
javax.servlet.http.Cookie
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.util.concurrent.TimeUnit
;
public
class
UserContext
{
public
static
final
Long
expireLength
=
1
l
;
private
static
UserContext
userContext
=
new
UserContext
();
public
static
UserContext
getContext
(){
return
userContext
;
}
public
UserDetail
get
(){
String
key
=
Constants
.
TOKEN_KEY
+
getToken
();
Object
cache
=
RedisUtil
.
getCache
(
key
);
if
(
cache
!=
null
){
return
(
UserDetail
)
cache
;
}
return
new
UserDetail
();
}
public
void
init
(
UserDetail
userDetail
){
String
uuId
=
ToolUtil
.
randomUUID
();
String
key
=
Constants
.
TOKEN_KEY
+
uuId
;
RedisUtil
.
setCache
(
key
,
userDetail
,
expireLength
,
TimeUnit
.
HOURS
);
Cookie
cookie
=
new
Cookie
(
Constants
.
USER_TOKEN
,
uuId
);
cookie
.
setPath
(
"/"
);
HttpServletResponse
response
=
RequestContext
.
getContext
().
getResponse
();
if
(
response
!=
null
){
response
.
addCookie
(
cookie
);
}
}
public
void
refresh
(){
String
key
=
Constants
.
TOKEN_KEY
+
getToken
();
RedisUtil
.
getRedisClient
().
getBucket
(
key
).
expire
(
expireLength
,
TimeUnit
.
HOURS
);
}
public
void
destory
(){
String
key
=
Constants
.
TOKEN_KEY
+
getToken
();
RedisUtil
.
delCache
(
key
);
}
public
String
getToken
(){
String
token
=
null
;
HttpServletRequest
request
=
RequestContext
.
getContext
().
getRequest
();
if
(
request
!=
null
){
Cookie
[]
cookies
=
request
.
getCookies
();
if
(
cookies
!=
null
){
for
(
Cookie
cookie
:
cookies
)
{
if
(
Constants
.
USER_TOKEN
.
equals
(
cookie
.
getName
()))
{
token
=
cookie
.
getValue
();
break
;
}
}
}
}
return
token
;
}
}
gic-enterprise-base-api/src/main/java/com/gic/enterprise/filter/UserDetailFilter.java
View file @
ce8125f4
package
com
.
gic
.
enterprise
.
filter
;
import
com.alibaba.fastjson.JSON
;
import
com.gic.enterprise.utils.UserDetailUtils
;
import
org.apache.dubbo.common.constants.CommonConstants
;
import
org.apache.dubbo.common.extension.Activate
;
...
...
@@ -13,7 +14,7 @@ public class UserDetailFilter implements Filter {
public
Result
invoke
(
Invoker
<?>
invoker
,
Invocation
invocation
)
throws
RpcException
{
RpcContext
context
=
RpcContext
.
getContext
();
Map
<
String
,
String
>
attachments
=
context
.
getAttachments
();
//UserDetailUtils.setUserDetail(attachments.get("userDetail"
));
System
.
out
.
println
(
"filter attachments"
+
JSON
.
toJSONString
(
attachments
));
return
invoker
.
invoke
(
invocation
);
}
}
gic-enterprise-base-api/src/main/java/com/gic/enterprise/utils/UserDetailUtils.java
View file @
ce8125f4
package
com
.
gic
.
enterprise
.
utils
;
import
com.alibaba.fastjson.JSON
;
import
com.gic.commons.util.ToolUtil
;
import
com.gic.commons.web.RequestThreadLocal
;
import
com.gic.commons.web.ResponseThreadLocal
;
import
com.gic.commons.web.ex.ErrorEnum
;
import
com.gic.commons.web.ex.GicApiException
;
import
com.gic.enterprise.constants.Constants
;
import
com.gic.redis.data.util.RedisUtil
;
import
javax.servlet.http.Cookie
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.concurrent.TimeUnit
;
import
com.gic.enterprise.context.UserContext
;
public
class
UserDetailUtils
{
public
static
UserDetail
getUserDetail
(){
HttpServletRequest
request
=
RequestThreadLocal
.
get
();
if
(
request
!=
null
){
Cookie
[]
cookies
=
request
.
getCookies
();
if
(
cookies
!=
null
){
String
token
=
null
;
for
(
Cookie
cookie
:
cookies
)
{
if
(
Constants
.
USER_TOKEN
.
equals
(
cookie
.
getName
()))
{
token
=
cookie
.
getValue
();
break
;
}
}
String
key
=
Constants
.
TOKEN_KEY
+
token
;
Object
cache
=
RedisUtil
.
getCache
(
key
);
if
(
cache
!=
null
){
return
(
UserDetail
)
cache
;
}
}
}
return
new
UserDetail
();
return
UserContext
.
getContext
().
get
();
}
public
static
void
setUserDetail
(
UserDetail
userDetail
){
String
uuId
=
ToolUtil
.
randomUUID
();
String
key
=
Constants
.
TOKEN_KEY
+
uuId
;
RedisUtil
.
setCache
(
key
,
userDetail
,
1
l
,
TimeUnit
.
HOURS
);
Cookie
cookie
=
new
Cookie
(
Constants
.
USER_TOKEN
,
uuId
);
cookie
.
setPath
(
"/"
);
ResponseThreadLocal
.
get
().
addCookie
(
cookie
);
UserContext
.
getContext
().
init
(
userDetail
);
}
}
gic-enterprise-common/src/main/java/com/gic/enterprise/interceptor/AuthInterceptor.java
View file @
ce8125f4
package
com
.
gic
.
enterprise
.
interceptor
;
import
com.gic.enterprise.constants.Constants
;
import
com.gic.enterprise.context.UserContext
;
import
com.gic.enterprise.utils.UserDetail
;
import
com.sun.tools.internal.xjc.reader.xmlschema.bindinfo.BIConversion
;
import
org.apache.dubbo.rpc.RpcContext
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
org.springframework.web.servlet.handler.HandlerInterceptorAdapter
;
...
...
@@ -16,6 +21,8 @@ public class AuthInterceptor extends HandlerInterceptorAdapter {
@Override
public
boolean
preHandle
(
HttpServletRequest
request
,
HttpServletResponse
response
,
Object
object
)
throws
Exception
{
String
token
=
UserContext
.
getContext
().
getToken
();
RpcContext
.
getContext
().
set
(
Constants
.
USER_TOKEN
,
token
);
return
true
;
}
}
gic-enterprise-common/src/main/java/com/gic/enterprise/interceptor/RequestInteceptor.java
View file @
ce8125f4
...
...
@@ -2,6 +2,7 @@ package com.gic.enterprise.interceptor;
import
com.gic.commons.web.RequestThreadLocal
;
import
com.gic.commons.web.ResponseThreadLocal
;
import
com.gic.enterprise.context.RequestContext
;
import
org.springframework.web.servlet.handler.HandlerInterceptorAdapter
;
import
javax.servlet.http.HttpServletRequest
;
...
...
@@ -19,16 +20,14 @@ public class RequestInteceptor extends HandlerInterceptorAdapter {
@Override
public
boolean
preHandle
(
HttpServletRequest
request
,
HttpServletResponse
response
,
Object
object
)
throws
Exception
{
RequestThreadLocal
.
set
(
request
);
ResponseThreadLocal
.
set
(
response
);
RequestContext
.
getContext
().
init
(
request
,
response
);
return
true
;
}
@Override
public
void
afterCompletion
(
HttpServletRequest
request
,
HttpServletResponse
response
,
Object
handler
,
Exception
ex
)
throws
Exception
{
RequestThreadLocal
.
remove
();
ResponseThreadLocal
.
remove
();
RequestContext
.
getContext
().
destroy
();
}
}
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