diff --git a/lab-common/pom.xml b/lab-common/pom.xml
index 5f7791d..608493b 100644
--- a/lab-common/pom.xml
+++ b/lab-common/pom.xml
@@ -38,6 +38,13 @@
ant
1.9.1
+
+ com.yawei.oav2
+ yawei-pso
+ 2.0.2
+ system
+ ${pom.basedir}/src/main/resources/lib/yawei-pso-2.0.2.jar
+
diff --git a/lab-gateway/pom.xml b/lab-gateway/pom.xml
index 2ce0f1e..bd34bd1 100644
--- a/lab-gateway/pom.xml
+++ b/lab-gateway/pom.xml
@@ -44,6 +44,10 @@
org.springblade
blade-core-launch
+
+ com.yawei.oav2
+ yawei-pso
+
diff --git a/lab-service/lab-user/src/main/java/org/springblade/system/jinhong/BaseUtils.java b/lab-service/lab-user/src/main/java/org/springblade/system/jinhong/BaseUtils.java
new file mode 100644
index 0000000..c3a7b6a
--- /dev/null
+++ b/lab-service/lab-user/src/main/java/org/springblade/system/jinhong/BaseUtils.java
@@ -0,0 +1,35 @@
+package org.springblade.system.jinhong;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.Properties;
+
+public class BaseUtils
+{
+ /**
+ * 获取配置文件中的配置信息
+ *
+ * @param key配置文件key值
+ * @return
+ * @throws IOException
+ */
+ public static String getConfigValue(String key)
+ {
+ try
+ {
+ Properties props = new Properties();
+ InputStream in = BaseUtils.class.getClassLoader()
+ .getResourceAsStream("config.properties");
+ BufferedReader bf = new BufferedReader(new InputStreamReader(in,
+ "UTF-8"));
+ props.load(bf);
+ return props.getProperty(key);
+ }
+ catch (IOException ex)
+ {
+ return "";
+ }
+ }
+}
diff --git a/lab-service/lab-user/src/main/java/org/springblade/system/jinhong/IdentityInterceptor.java b/lab-service/lab-user/src/main/java/org/springblade/system/jinhong/IdentityInterceptor.java
new file mode 100644
index 0000000..8d51a82
--- /dev/null
+++ b/lab-service/lab-user/src/main/java/org/springblade/system/jinhong/IdentityInterceptor.java
@@ -0,0 +1,156 @@
+package org.springblade.system.jinhong;
+
+import java.net.URLEncoder;
+import java.util.Iterator;
+import java.util.Map.Entry;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+
+import com.yawei.pso.PSORequest;
+import com.yawei.pso.SSOResponse;
+import com.yawei.pso.TicketManager;
+
+/**
+ * 自定义拦截器,拦截符合条件url的请求 身份验证拦截
+ * (是否有登录用户信息)
+ */
+@Slf4j
+@Component
+public class IdentityInterceptor extends HandlerInterceptorAdapter
+{
+
+ // 读取ssoToken参数
+ private static final String strToken = BaseUtils.getConfigValue("ssoKey");
+
+ public final static String SEESION_USER = "seesion_user";
+
+ /**
+ * 在业务处理器处理请求之前被调用 如果返回false 从当前的拦截器往回执行所有拦截器的afterCompletion(),再退出拦截器链
+ * 如果返回true 执行下一个拦截器,直到所有的拦截器都执行完毕 再执行被拦截的Controller 然后进入拦截器链,
+ * 从最后一个拦截器往回执行所有的postHandle() 接着再从最后一个拦截器往回执行所有的afterCompletion()
+ */
+ @Override
+ public boolean preHandle(HttpServletRequest request,
+ HttpServletResponse response, Object handler) throws Exception
+ {
+
+ log.debug("==============执行顺序: 1、preHandle================");
+ // 获取当前请求的url
+ String requestUri = request.getRequestURI();
+
+ Validator validator = Validator.getInstance();
+ // 注入当前session
+ // validator.init(request);
+
+ String strResponse = request.getParameter(strToken);
+
+ //真实环境需要放开如下注释
+ /**
+ *
+
+ if (strResponse != null)
+ {
+ // 如果服务器端通过认证后,会返回后执行改操作,然后写入cookie
+ SSOResponse ssoResp = new SSOResponse(strResponse);
+ TicketManager tm = ssoResp.CreatePSOTicket();
+ if (tm == null)
+ {
+ PSORequest psoRequest = new PSORequest(request);
+ String requeststr = psoRequest.CreateHash();
+
+ String keeperUrl = BaseUtils.getConfigValue("keeperUrl");
+ keeperUrl = keeperUrl + "?" + strToken + "="
+ + URLEncoder.encode(requeststr, "UTF-8");
+ response.sendRedirect(keeperUrl);
+ }
+ else
+ {
+ String domainName = BaseUtils.getConfigValue("domain");
+ tm.SaveTicket(response, domainName);
+
+ Iterator> iterator = request
+ .getParameterMap().entrySet().iterator();
+ StringBuffer param = new StringBuffer();
+ int i = 0;
+ while (iterator.hasNext())
+ {
+ Entry entry = (Entry) iterator
+ .next();
+ if (entry.getKey().equals(strToken))
+ continue;
+ else
+ {
+ i++;
+ if (i == 1)
+ param.append("?").append(entry.getKey())
+ .append("=");
+ else
+ param.append("&").append(entry.getKey())
+ .append("=");
+
+ if (entry.getValue() instanceof String[])
+ {
+ param.append(((String[]) entry.getValue())[0]);
+ }
+ else
+ {
+ param.append(entry.getValue());
+ }
+ }
+ }
+ response.sendRedirect(requestUri + param.toString());
+ return false;
+ }
+ }
+ else
+ {
+ TicketManager tm = new TicketManager();
+ if (!tm.LoadTicket(request))
+ {
+ PSORequest psoRequest = new PSORequest(request);
+ String requeststr = psoRequest.CreateHash();
+
+ String keeperUrl = BaseUtils.getConfigValue("keeperUrl");
+ keeperUrl = keeperUrl + "?" + strToken + "="
+ + URLEncoder.encode(requeststr, "UTF-8");
+ response.sendRedirect(keeperUrl);
+ return false;
+ }
+ }
+
+ validator.SetUserTicket(request);
+ return true;
+ */
+ return false;
+ }
+
+ /**
+ * 在业务处理器处理请求执行完成后,生成视图之前执行的动作 可在modelAndView中加入数据,比如当前时间
+ */
+ @Override
+ public void postHandle(HttpServletRequest request,
+ HttpServletResponse response, Object handler,
+ ModelAndView modelAndView) throws Exception
+ {
+ log.debug("==============执行顺序: 2、postHandle================");
+ }
+
+ /**
+ * 在DispatcherServlet完全处理完请求后被调用,可用于清理资源等
+ *
+ * 当有拦截器抛出异常时,会从当前拦截器往回执行所有的拦截器的afterCompletion()
+ */
+ @Override
+ public void afterCompletion(HttpServletRequest request,
+ HttpServletResponse response, Object handler, Exception ex)
+ throws Exception
+ {
+ log.debug("==============执行顺序: 3、afterCompletion================");
+ }
+}
diff --git a/lab-service/lab-user/src/main/java/org/springblade/system/jinhong/Validator.java b/lab-service/lab-user/src/main/java/org/springblade/system/jinhong/Validator.java
new file mode 100644
index 0000000..7bc8e81
--- /dev/null
+++ b/lab-service/lab-user/src/main/java/org/springblade/system/jinhong/Validator.java
@@ -0,0 +1,90 @@
+package org.springblade.system.jinhong;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
+import com.yawei.pso.TicketManager;
+
+/**
+ * 验证器
+ */
+public class Validator
+{
+ private static ThreadLocal validatorHolder = new ThreadLocal()
+ {
+
+ protected Validator initialValue()
+ {
+ return new Validator();
+ }
+
+ };
+
+ // 当前请求的session
+ private HttpSession session = null;
+
+ // 当前的请求
+ private HttpServletRequest request = null;
+
+ private Validator()
+ {
+ }
+
+ public static Validator getInstance()
+ {
+ return validatorHolder.get();
+ }
+
+ /**
+ * 执行初始化
+ * @param httpRequest
+ */
+ public void init(HttpServletRequest httpRequest)
+ {
+ this.request = httpRequest;
+ this.session = request.getSession();
+ }
+
+ /**
+ * 将凭证身份加入到session
+ * @param httpRequest
+ */
+ public void SetUserTicket(HttpServletRequest httpRequest)
+ {
+ try
+ {
+ if (httpRequest.getSession()
+ .getAttribute(IdentityInterceptor.SEESION_USER) == null)
+ {
+ TicketManager ticket = new TicketManager();
+ if (ticket.LoadTicket(httpRequest))
+ {
+ // 登录用户姓名
+ String userName = ticket.getUserName();
+ // 登录用户账号
+ String userAccount = ticket.getUserID();
+ // 登录用户标识
+ String userGuid = ticket.getADGUID();
+ System.out.println("===userName===" + userName);
+ System.out.println("===userAccount===" + userAccount);
+ System.out.println("===userGuid===" + userGuid);
+ }
+ }
+ else
+ {
+ }
+ }
+ catch (Exception ex)
+ {
+ }
+ }
+
+ /**
+ * 清除session
+ */
+ public void cancel()
+ {
+ this.session = null;
+ }
+
+}
diff --git a/lab-service/lab-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java b/lab-service/lab-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java
index 580fb2c..b419a1f 100644
--- a/lab-service/lab-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java
+++ b/lab-service/lab-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java
@@ -296,7 +296,6 @@ public class UserServiceImpl extends BaseServiceImpl implement
// queryWrapper.like(User::getRoleId, "1432876315142520834");
// }
- IPage