Commit 9073e614 by 朱瑞泽

test

parent ec4d04fa
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
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();
}
}
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
/**
*
*/
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;
// }
// }
}
......@@ -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
<?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>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment