Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gic-demo-single
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
gic_demo
gic-demo-single
Commits
9073e614
Commit
9073e614
authored
Jun 18, 2019
by
朱瑞泽
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
test
parent
ec4d04fa
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
285 additions
and
149 deletions
+285
-149
pom.xml
gic-demo-single-web/pom.xml
+0
-0
Main.java
...ingle-web/src/main/java/com/gic/demo/single/web/Main.java
+31
-29
GlobalExceptionHandler2.java
...c/demo/single/web/controller/GlobalExceptionHandler2.java
+43
-0
Test2Controller.java
...a/com/gic/demo/single/web/controller/Test2Controller.java
+31
-0
SecurityConfig.java
...java/com/gic/demo/single/web/security/SecurityConfig.java
+123
-120
app.properties
...emo-single-web/src/main/resources/META-INF/app.properties
+1
-0
application.yml
gic-demo-single-web/src/main/resources/application.yml
+29
-0
log4j2.xml
gic-demo-single-web/src/main/resources/log4j2.xml
+27
-0
No files found.
gic-demo-single-web/pom.xml
View file @
9073e614
This diff is collapsed.
Click to expand it.
gic-demo-single-web/src/main/java/com/gic/demo/single/web/Main.java
View file @
9073e614
package
com
.
gic
.
demo
.
single
.
web
;
import
com.ctrip.framework.apollo.spring.annotation.EnableApolloConfig
;
import
com.gic.dubbo.util.DubboContextUtil
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.context.ConfigurableApplicationContext
;
import
org.springframework.context.annotation.ImportResource
;
/**
* Spring Boot Web 启动类
*
* @author zhurz
*/
@EnableApolloConfig
({
"COMMON.redis"
})
@ImportResource
(
value
=
{
"classpath*:applicationContext-init.xml"
,
"classpath*:dubbo-setting.xml"
,
"classpath*:dubbo-gic-demo-web.xml"
,
"classpath*:spring-interceptor.xml"
})
@SpringBootApplication
(
scanBasePackages
=
{
"com.gic.demo.*"
})
public
class
Main
{
public
static
void
main
(
String
[]
args
)
{
ConfigurableApplicationContext
context
=
SpringApplication
.
run
(
Main
.
class
,
args
);
DubboContextUtil
.
setApplicationContext
(
context
);
}
package
com
.
gic
.
demo
.
single
.
web
;
import
com.ctrip.framework.apollo.spring.annotation.EnableApolloConfig
;
import
com.gic.dubbo.util.DubboContextUtil
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
;
import
org.springframework.context.ConfigurableApplicationContext
;
import
org.springframework.context.annotation.ImportResource
;
/**
* Spring Boot Web 启动类
*
* @author zhurz
*/
@EnableApolloConfig
({
"COMMON.redis"
})
@ImportResource
(
value
=
{
"classpath*:applicationContext-init.xml"
,
"classpath*:dubbo-setting.xml"
,
"classpath*:dubbo-gic-demo-web.xml"
,
"classpath*:spring-interceptor.xml"
})
@SpringBootApplication
(
scanBasePackages
=
{
"com.gic.demo.*"
},
exclude
=
{
DataSourceAutoConfiguration
.
class
})
public
class
Main
{
public
static
void
main
(
String
[]
args
)
{
ConfigurableApplicationContext
context
=
SpringApplication
.
run
(
Main
.
class
,
args
);
DubboContextUtil
.
setApplicationContext
(
context
);
}
}
\ No newline at end of file
gic-demo-single-web/src/main/java/com/gic/demo/single/web/controller/GlobalExceptionHandler2.java
0 → 100644
View file @
9073e614
package
com
.
gic
.
demo
.
single
.
web
.
controller
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.web.bind.annotation.ControllerAdvice
;
import
org.springframework.web.bind.annotation.ExceptionHandler
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.ByteArrayOutputStream
;
import
java.io.PrintWriter
;
/**
* Created 2018/7/24.
*
* @author hua
*/
@ControllerAdvice
public
class
GlobalExceptionHandler2
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
GlobalExceptionHandler2
.
class
);
@ResponseBody
@ExceptionHandler
(
Exception
.
class
)
public
String
ControllerException
(
HttpServletResponse
response
,
Exception
ex
)
{
logger
.
error
(
"err"
);
ex
.
printStackTrace
();
StringBuilder
sb
=
new
StringBuilder
();
ByteArrayOutputStream
baos
=
new
ByteArrayOutputStream
();
try
(
PrintWriter
printWriter
=
new
PrintWriter
(
baos
))
{
ex
.
printStackTrace
(
printWriter
);
}
try
{
sb
.
append
(
baos
.
toString
());
}
catch
(
Exception
ignored
)
{
}
if
(
sb
.
length
()
==
0
)
{
sb
.
append
(
ex
.
getMessage
());
}
// 输出详细错误信息,便于调试
return
sb
.
toString
();
}
}
gic-demo-single-web/src/main/java/com/gic/demo/single/web/controller/Test2Controller.java
0 → 100644
View file @
9073e614
package
com
.
gic
.
demo
.
single
.
web
.
controller
;
import
com.gic.commons.webapi.reponse.RestResponse
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* 指标管理接口
*
* @author zhurz
*/
//@RestController
public
class
Test2Controller
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
Test2Controller
.
class
);
/**
* 获取门店信息
*
* @param storeId 门店id
* @return
*/
@RequestMapping
(
"/error"
)
public
RestResponse
getStoreInfo
(
String
storeId
)
{
return
RestResponse
.
failure
(
"1111"
,
"错了"
);
}
}
\ No newline at end of file
gic-demo-single-web/src/main/java/com/gic/demo/single/web/security/SecurityConfig.java
View file @
9073e614
/**
*
*/
package
com
.
gic
.
demo
.
single
.
web
.
security
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso
;
import
org.springframework.boot.autoconfigure.web.ServerProperties
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler
;
import
org.springframework.security.access.expression.method.MethodSecurityExpressionHandler
;
import
org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity
;
import
org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration
;
import
org.springframework.security.config.annotation.web.builders.HttpSecurity
;
import
org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter
;
import
org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler
;
import
org.springframework.session.FindByIndexNameSessionRepository
;
import
org.springframework.session.data.redis.RedisOperationsSessionRepository
;
import
org.springframework.session.security.SpringSessionBackedSessionRegistry
;
import
org.springframework.web.context.request.RequestContextListener
;
import
org.springframework.web.cors.CorsUtils
;
import
com.gic.authcenter.security.core.authc.AuthcenterCookieClearingLogoutHandler
;
import
com.gic.authcenter.security.core.authc.AuthcenterLoginUrlAuthenticationEntryPoint
;
import
com.gic.authcenter.security.core.authc.AuthcenterLogoutSuccessHandler
;
import
com.gic.authcenter.security.core.authc.AuthcenterRedisSessionClearingLogoutHandler
;
import
com.gic.authcenter.security.core.authz.AuthcenterAccessDeniedHandler
;
import
com.gic.authcenter.security.core.authz.AuthcenterPermissionEvaluator
;
import
com.gic.demo.single.web.security.handler.CustomAuthenticationSuccessHandler
;
/**
*
* @author leeon
*
*/
@Configuration
@EnableOAuth2Sso
public
class
SecurityConfig
extends
WebSecurityConfigurerAdapter
{
@Autowired
private
ServerProperties
serverProperties
;
@Autowired
private
RedisOperationsSessionRepository
redisOperationsSessionRepository
;
@Bean
@SuppressWarnings
({
"unchecked"
,
"rawtypes"
})
public
SpringSessionBackedSessionRegistry
sessionRegistry
()
{
return
new
SpringSessionBackedSessionRegistry
(((
FindByIndexNameSessionRepository
)
redisOperationsSessionRepository
));
}
@Bean
public
RequestContextListener
requestContextListener
()
{
return
new
RequestContextListener
();
}
@Bean
public
CustomAuthenticationSuccessHandler
customAuthenticationSuccessHandler
()
{
return
new
CustomAuthenticationSuccessHandler
();
}
@Bean
public
AuthcenterAccessDeniedHandler
authcenterAccessDeniedHandler
()
{
return
new
AuthcenterAccessDeniedHandler
();
}
@Override
public
void
configure
(
HttpSecurity
http
)
throws
Exception
{
// @formatter:off
http
.
authorizeRequests
()
.
antMatchers
(
"/"
,
"/login"
)
.
permitAll
()
.
requestMatchers
(
CorsUtils:
:
isPreFlightRequest
)
.
permitAll
()
.
anyRequest
()
.
authenticated
()
.
and
()
.
formLogin
()
.
successHandler
(
customAuthenticationSuccessHandler
())
.
and
()
.
logout
()
.
addLogoutHandler
(
new
AuthcenterCookieClearingLogoutHandler
(
serverProperties
.
getServlet
().
getSession
().
getCookie
().
getName
()))
.
addLogoutHandler
(
new
AuthcenterRedisSessionClearingLogoutHandler
(
redisOperationsSessionRepository
))
.
addLogoutHandler
(
new
SecurityContextLogoutHandler
())
.
logoutSuccessHandler
(
new
AuthcenterLogoutSuccessHandler
())
.
and
()
.
exceptionHandling
()
.
accessDeniedHandler
(
authcenterAccessDeniedHandler
())
.
authenticationEntryPoint
(
new
AuthcenterLoginUrlAuthenticationEntryPoint
(
"/login"
))
.
and
()
.
sessionManagement
()
.
maximumSessions
(
1
)
.
sessionRegistry
(
sessionRegistry
())
.
and
()
.
and
().
csrf
().
disable
()
;
// @formatter:on
}
@Configuration
@EnableGlobalMethodSecurity
(
prePostEnabled
=
true
)
public
static
class
MethodSecurityConfig
extends
GlobalMethodSecurityConfiguration
{
@Bean
public
AuthcenterPermissionEvaluator
authcenterPermissionEvaluator
()
{
return
new
AuthcenterPermissionEvaluator
();
}
@Override
protected
MethodSecurityExpressionHandler
createExpressionHandler
()
{
DefaultMethodSecurityExpressionHandler
expressionHandler
=
new
DefaultMethodSecurityExpressionHandler
();
expressionHandler
.
setPermissionEvaluator
(
authcenterPermissionEvaluator
());
return
expressionHandler
;
}
}
}
/**
*
*/
package
com
.
gic
.
demo
.
single
.
web
.
security
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso
;
import
org.springframework.boot.autoconfigure.web.ServerProperties
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler
;
import
org.springframework.security.access.expression.method.MethodSecurityExpressionHandler
;
import
org.springframework.security.authentication.AuthenticationManager
;
import
org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder
;
import
org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity
;
import
org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration
;
import
org.springframework.security.config.annotation.web.builders.HttpSecurity
;
import
org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter
;
import
org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler
;
import
org.springframework.session.FindByIndexNameSessionRepository
;
import
org.springframework.session.data.redis.RedisOperationsSessionRepository
;
import
org.springframework.session.security.SpringSessionBackedSessionRegistry
;
import
org.springframework.web.context.request.RequestContextListener
;
import
org.springframework.web.cors.CorsUtils
;
import
com.gic.authcenter.security.core.authc.AuthcenterCookieClearingLogoutHandler
;
import
com.gic.authcenter.security.core.authc.AuthcenterLoginUrlAuthenticationEntryPoint
;
import
com.gic.authcenter.security.core.authc.AuthcenterLogoutSuccessHandler
;
import
com.gic.authcenter.security.core.authc.AuthcenterRedisSessionClearingLogoutHandler
;
import
com.gic.authcenter.security.core.authz.AuthcenterAccessDeniedHandler
;
import
com.gic.authcenter.security.core.authz.AuthcenterPermissionEvaluator
;
import
com.gic.demo.single.web.security.handler.CustomAuthenticationSuccessHandler
;
/**
*
* @author leeon
*
*/
@Configuration
@EnableOAuth2Sso
public
class
SecurityConfig
extends
WebSecurityConfigurerAdapter
{
@Autowired
private
ServerProperties
serverProperties
;
@Autowired
private
RedisOperationsSessionRepository
redisOperationsSessionRepository
;
@Bean
@SuppressWarnings
({
"unchecked"
,
"rawtypes"
})
public
SpringSessionBackedSessionRegistry
sessionRegistry
()
{
return
new
SpringSessionBackedSessionRegistry
(((
FindByIndexNameSessionRepository
)
redisOperationsSessionRepository
));
}
@Bean
public
RequestContextListener
requestContextListener
()
{
return
new
RequestContextListener
();
}
@Bean
public
CustomAuthenticationSuccessHandler
customAuthenticationSuccessHandler
()
{
return
new
CustomAuthenticationSuccessHandler
();
}
@Bean
public
AuthcenterAccessDeniedHandler
authcenterAccessDeniedHandler
()
{
return
new
AuthcenterAccessDeniedHandler
();
}
@Override
public
void
configure
(
HttpSecurity
http
)
throws
Exception
{
// @formatter:off
http
.
authorizeRequests
()
.
antMatchers
(
"/"
,
"/login"
,
"/test-info"
)
.
permitAll
()
.
requestMatchers
(
CorsUtils:
:
isPreFlightRequest
)
.
permitAll
()
.
anyRequest
()
.
authenticated
()
.
and
()
.
formLogin
()
.
successHandler
(
customAuthenticationSuccessHandler
())
.
and
()
.
logout
()
.
addLogoutHandler
(
new
AuthcenterCookieClearingLogoutHandler
(
serverProperties
.
getServlet
().
getSession
().
getCookie
().
getName
()))
.
addLogoutHandler
(
new
AuthcenterRedisSessionClearingLogoutHandler
(
redisOperationsSessionRepository
))
.
addLogoutHandler
(
new
SecurityContextLogoutHandler
())
.
logoutSuccessHandler
(
new
AuthcenterLogoutSuccessHandler
())
.
and
()
.
exceptionHandling
()
.
accessDeniedHandler
(
authcenterAccessDeniedHandler
())
.
accessDeniedPage
(
"/test-info"
)
.
authenticationEntryPoint
(
new
AuthcenterLoginUrlAuthenticationEntryPoint
(
"/login"
))
.
and
()
.
sessionManagement
()
.
maximumSessions
(
1
)
.
sessionRegistry
(
sessionRegistry
())
.
and
()
.
and
().
csrf
().
disable
()
;
// @formatter:on
}
// @Configuration
// @EnableGlobalMethodSecurity(prePostEnabled = true)
// public static class MethodSecurityConfig extends GlobalMethodSecurityConfiguration {
//
// @Bean
// public AuthcenterPermissionEvaluator authcenterPermissionEvaluator() {
// return new AuthcenterPermissionEvaluator();
// }
//
// @Override
// protected MethodSecurityExpressionHandler createExpressionHandler() {
// DefaultMethodSecurityExpressionHandler expressionHandler = new DefaultMethodSecurityExpressionHandler();
// expressionHandler.setPermissionEvaluator(authcenterPermissionEvaluator());
// return expressionHandler;
// }
// }
}
gic-demo-single-web/src/main/resources/META-INF/app.properties
0 → 100644
View file @
9073e614
app.id
=
gic-demo
gic-demo-single-web/src/main/resources/application.yml
View file @
9073e614
...
...
@@ -2,6 +2,10 @@ server:
port
:
9002
servlet
:
context-path
:
/gic-demo-single-web
session
:
cookie
:
name
:
BIZDICTSESSIONID2
timeout
:
30m
tomcat
:
uri-encoding
:
UTF-8
...
...
@@ -15,3 +19,28 @@ spring:
charset
:
UTF-8
enabled
:
true
force
:
true
redis
:
database
:
11
host
:
123.207.187.158
password
:
crs-6vmo0g9s:gic*0571
port
:
27019
timeout
:
5000
session
:
store-type
:
REDIS
# store-type: none
logging
:
level
:
org
:
springframework
:
security
:
DEBUG
security
:
oauth2
:
client
:
access-token-uri
:
https://www.gicdev.com/gic-authcenter/oauth/token
clientId
:
gicbizdictid
clientSecret
:
gicbizdictsecret
user-authorization-uri
:
https://www.gicdev.com/gic-authcenter/oauth/authorize
resource
:
user-info-uri
:
https://www.gicdev.com/gic-authcenter/resource/userDetails
gic-demo-single-web/src/main/resources/log4j2.xml
0 → 100644
View file @
9073e614
<?xml version="1.0" encoding="UTF-8"?>
<configuration
status=
"error"
packages=
"com.gic.commons.log"
>
<appenders>
<!--这个输出控制台的配置-->
<Console
name=
"Console"
target=
"SYSTEM_OUT"
>
<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
<ThresholdFilter
level=
"trace"
onMatch=
"ACCEPT"
onMismatch=
"DENY"
/>
<!--这个都知道是输出日志的格式-->
<PatternLayout
pattern=
"%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c:%L] [%traceId] %m%n"
/>
</Console>
</appenders>
<loggers>
<!--建立一个默认的root的logger-->
<Logger
name=
"com.gic"
level=
"DEBUG"
/>
<Logger
name=
"org.springframework"
level=
"INFO"
/>
<logger
name=
"Sharding-JDBC-SQL"
level=
"INFO"
/>
<logger
name=
"org.hibernate.SQL"
level=
"DEBUG"
/>
<logger
name=
"org.hibernate.type.descriptor.sql.BasicBinder"
level=
"DEBUG"
/>
<Root
level=
"WARN"
>
<!-- <Root level="DEBUG">-->
<AppenderRef
ref=
"Console"
/>
</Root>
</loggers>
</configuration>
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