You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
153 lines
4.5 KiB
153 lines
4.5 KiB
package ${domain}.frame.auth;
|
|
|
|
import org.springframework.beans.BeansException;
|
|
import org.springframework.context.ApplicationContext;
|
|
import org.springframework.core.env.Environment;
|
|
import org.springframework.web.context.request.RequestContextHolder;
|
|
import org.springframework.web.context.request.ServletRequestAttributes;
|
|
import ${domain}.frame.utils.PropertiesUtil;
|
|
import ${domain}.frame.utils.StringUtil;
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import java.util.regex.Matcher;
|
|
import java.util.regex.Pattern;
|
|
|
|
/**
|
|
* LocalData - 本地数据存放类
|
|
*
|
|
* @author wangbing
|
|
* @version 0.0.1
|
|
* @since 2017-01-01
|
|
*/
|
|
public class LocalData {
|
|
|
|
private static String[] applicationArgs = null;
|
|
|
|
private static ApplicationContext applicationContext = null;
|
|
|
|
private static Token system = null;
|
|
|
|
static {
|
|
// 组装系统Token
|
|
system = new Token();
|
|
system.setId(0);
|
|
system.setUserId(0);
|
|
system.setUserName("system");
|
|
system.putRes(".*");
|
|
}
|
|
|
|
public static Token getSysToken() {
|
|
return system;
|
|
}
|
|
|
|
/**
|
|
* 当前用户的通行证
|
|
*/
|
|
private static final ThreadLocal<Token> tokenHolder = new ThreadLocal();
|
|
|
|
public static Token getToken() {
|
|
return tokenHolder.get();
|
|
}
|
|
|
|
public static void setToken(Token token) {
|
|
tokenHolder.set(token);
|
|
}
|
|
|
|
public static HttpServletRequest getRequest() {
|
|
return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
|
|
}
|
|
|
|
public static HttpServletResponse getResponse() {
|
|
return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
|
|
}
|
|
|
|
public static ApplicationContext getApplicationContext() {
|
|
return LocalData.applicationContext;
|
|
}
|
|
|
|
public static void init(ApplicationContext context, String[] args) {
|
|
LocalData.applicationContext = context;
|
|
LocalData.applicationArgs = args;
|
|
}
|
|
|
|
/**
|
|
* 是否初始化完成
|
|
*
|
|
* @return 是否
|
|
*/
|
|
public static boolean isInited() {
|
|
return LocalData.applicationContext != null;
|
|
}
|
|
|
|
public static <T> T getBean(Class<T> t) {
|
|
if (getApplicationContext() == null) {
|
|
return null;
|
|
}
|
|
try {
|
|
return getApplicationContext().getBean(t);
|
|
} catch (BeansException ignored) {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public static Environment getEnvironment() {
|
|
return getBean(Environment.class);
|
|
}
|
|
|
|
public static String getProperty(String key, String defaultValue) {
|
|
Environment environment = getEnvironment();
|
|
if (environment != null) {
|
|
return environment.getProperty(key, defaultValue);
|
|
} else {
|
|
String active = LocalData.getActive();
|
|
if (StringUtil.isEmpty(active)) {
|
|
return PropertiesUtil.getProp("application.properties", key, defaultValue);
|
|
} else {
|
|
return PropertiesUtil.getProp("application-" + active + ".properties", key, defaultValue);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static String getActive() {
|
|
// 当上下文初始化已完成后优先使用SpringBoot内存参数
|
|
Environment environment = getEnvironment();
|
|
if (environment != null) {
|
|
return environment.getProperty("spring.profiles.active", "");
|
|
}
|
|
|
|
String active = "";
|
|
// 1命令行环境 --spring.profiles.active=dev
|
|
if (applicationArgs != null) {
|
|
Pattern compile = Pattern.compile("--spring\\.profiles\\.active=(.*)");
|
|
for (String arg : applicationArgs) {
|
|
Matcher matcher = compile.matcher(arg);
|
|
if (matcher.find()) {
|
|
active = matcher.group(1);
|
|
}
|
|
}
|
|
if (StringUtil.isNotEmpty(active)) {
|
|
return active;
|
|
}
|
|
}
|
|
|
|
// 2Java系统属性 -Dspring.profiles.active=dev
|
|
active = System.getProperty("spring.profiles.active");
|
|
if (StringUtil.isNotEmpty(active)) {
|
|
return active;
|
|
}
|
|
|
|
// 3操作系统环境变量 SPRING_PROFILES_ACTIVE=dev
|
|
active = System.getenv("SPRING_PROFILES_ACTIVE");
|
|
if (StringUtil.isNotEmpty(active)) {
|
|
return active;
|
|
}
|
|
|
|
// 4配置文件 spring.profiles.active=dev
|
|
return PropertiesUtil.getProp("application.properties", "spring.profiles.active", "");
|
|
}
|
|
|
|
public static String getContext() {
|
|
return getRequest().getContextPath();
|
|
}
|
|
} |