diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/session/SessionProvider.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/session/SessionProvider.java
new file mode 100644
index 0000000..78fb6dc
--- /dev/null
+++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/session/SessionProvider.java
@@ -0,0 +1,100 @@
+package com.lyms.platform.operate.web.session;
+
+import com.lyms.platform.common.base.LoginContext;
+import com.lyms.platform.operate.web.session.strategy.ISessionProvider;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Map;
+
+/**
+ * session 能力提供
+ *
+ *
+ * Created by Administrator on 2016/6/2 0002.
+ */
+public class SessionProvider implements ISessionProvider {
+ /**
+ * 配置
+ */
+ private Map iSessionProviderMap;
+ /**
+ * 默认的session提供
+ */
+ private ISessionProvider defaultSessionProvider;
+ /**
+ * 当前策略
+ */
+ private String currentStrateger;
+
+ public String getCurrentStrateger() {
+ return currentStrateger;
+ }
+
+ public void setCurrentStrateger(String currentStrateger) {
+ this.currentStrateger = currentStrateger;
+ }
+
+ public ISessionProvider getDefaultSessionProvider() {
+ return defaultSessionProvider;
+ }
+
+ public void setDefaultSessionProvider(ISessionProvider defaultSessionProvider) {
+ this.defaultSessionProvider = defaultSessionProvider;
+ }
+
+ public Map getiSessionProviderMap() {
+ return iSessionProviderMap;
+ }
+
+ public void setiSessionProviderMap(Map iSessionProviderMap) {
+ this.iSessionProviderMap = iSessionProviderMap;
+ }
+
+ @Override
+ public LoginContext checkSession(HttpServletRequest request, HttpServletResponse response, String token) {
+ ISessionProvider iSessionProvider = iSessionProviderMap.get(currentStrateger);
+ if (null != iSessionProvider) {
+ return iSessionProvider.checkSession(request, response, token);
+ }
+ if (null != defaultSessionProvider) {
+ return defaultSessionProvider.checkSession(request, response, token);
+ }
+ return null;
+ }
+
+ @Override
+ public void removeSession(String token) {
+ ISessionProvider iSessionProvider = iSessionProviderMap.get(currentStrateger);
+ if (null != iSessionProvider) {
+ iSessionProvider.removeSession(token);
+ }
+ if (null != defaultSessionProvider) {
+ defaultSessionProvider.removeSession(token);
+ }
+ }
+
+ @Override
+ public LoginContext login(String account, String password, String code) {
+ ISessionProvider iSessionProvider = iSessionProviderMap.get(currentStrateger);
+ if (null != iSessionProvider) {
+ return iSessionProvider.login(account, password, code);
+ }
+ if (null != defaultSessionProvider) {
+ return defaultSessionProvider.login(account, password, code);
+ }
+ return null;
+ }
+
+ @Override
+ public LoginContext register(String userId, String phone, String account, String pwd) {
+ ISessionProvider iSessionProvider = iSessionProviderMap.get(currentStrateger);
+ if (null != iSessionProvider) {
+ return iSessionProvider.register(userId, phone, account,pwd);
+ }
+ if (null != defaultSessionProvider) {
+ return defaultSessionProvider.register(userId, phone, account, pwd);
+ }
+ return null;
+ }
+}
\ No newline at end of file
diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/session/strategy/ISessionProvider.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/session/strategy/ISessionProvider.java
new file mode 100644
index 0000000..a545ec2
--- /dev/null
+++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/session/strategy/ISessionProvider.java
@@ -0,0 +1,48 @@
+package com.lyms.platform.operate.web.session.strategy;
+import com.lyms.platform.common.base.LoginContext;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * 提供验证session的方法
+ *
+ * Created by Administrator on 2016/6/2 0002.
+ */
+public interface ISessionProvider {
+
+ /**
+ * 检查session
+ *
+ * @param request
+ * @param response
+ * @param token
+ * @return
+ */
+ LoginContext checkSession(HttpServletRequest request,HttpServletResponse response,String token);
+
+ /**
+ * 删除session
+ * @param token
+ */
+ void removeSession(String token);
+
+ /**
+ * 登录
+ *
+ * @return
+ */
+ LoginContext login(String account,String password,String code);
+
+ /**
+ * 注册
+ *
+ * @param userId
+ * @param phone
+ * @param account
+ * @param pwd
+ * @return
+ */
+ LoginContext register(String userId, String phone,String account, String pwd);
+}
diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/session/strategy/LocalCacheSessionStrategy.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/session/strategy/LocalCacheSessionStrategy.java
new file mode 100644
index 0000000..e26f580
--- /dev/null
+++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/session/strategy/LocalCacheSessionStrategy.java
@@ -0,0 +1,90 @@
+package com.lyms.platform.operate.web.session.strategy;
+
+import com.google.common.cache.Cache;
+import com.google.common.cache.CacheBuilder;
+import com.lyms.platform.common.base.LoginContext;
+import com.lyms.platform.common.enums.YnEnums;
+import com.lyms.platform.common.exception.TokenException;
+import com.lyms.platform.common.utils.MD5Utils;
+import com.lyms.platform.common.utils.TokenUtils;
+import com.lyms.platform.permission.model.Users;
+import com.lyms.platform.permission.model.UsersQuery;
+import com.lyms.platform.permission.service.UsersService;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * 本地session缓存策略
+ *
+ * Created by Administrator on 2016/6/2 0002.
+ */
+public class LocalCacheSessionStrategy implements ISessionProvider {
+ @Autowired
+ private UsersService usersService;
+
+ private String preFix = "luc";
+
+ private Map localSessionCache = new ConcurrentHashMap<>();
+
+ public static Cache cache = CacheBuilder.newBuilder()
+ .expireAfterAccess(30, TimeUnit.MINUTES)
+ .build();
+
+ @Override
+ public LoginContext checkSession(HttpServletRequest request, HttpServletResponse response, String token) {
+ LoginContext loginContext = cache.getIfPresent(token);
+ if(null==loginContext||!loginContext.isLogin()) {
+ throw new TokenException();
+ }
+ Users users = usersService.getUsers(loginContext.getId());
+ if(null == users) {
+ throw new TokenException();
+ }
+ request.setAttribute("loginContext", loginContext);
+ return loginContext;
+ }
+
+ @Override
+ public void removeSession(String token) {
+ /*cache.remove(token);*/
+ }
+
+
+ @Override
+ public LoginContext login(String account, String password, String code) {
+
+ UsersQuery membersQuery = new UsersQuery();
+ membersQuery.setAccount(account);
+ membersQuery.setPwd(MD5Utils.md5(password).toUpperCase());
+ membersQuery.setYn(YnEnums.YES.getId());
+ //本地版本忽略code没有短信验证码
+ List membersList = usersService.queryUsers(membersQuery);
+ LoginContext loginContext = new LoginContext();
+ loginContext.setErrormsg("用户不存在.");
+ loginContext.setErrorcode(4003);
+ if (CollectionUtils.isNotEmpty(membersList)) {
+ Integer userId = membersList.get(0).getId();
+ loginContext.setId(userId);
+ String token = preFix + TokenUtils.getToken(UUID.randomUUID().toString());
+ loginContext.setToken(token);
+ loginContext.setErrorcode(0);
+ loginContext.setErrormsg("登录成功");
+ cache.put(token, loginContext);
+ }
+ return loginContext;
+ }
+
+ @Override
+ public LoginContext register(String userId, String phone, String account, String pwd) {
+ LoginContext loginContext = new LoginContext();
+ return loginContext;
+ }
+}
diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/session/strategy/UserCenterStrategy.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/session/strategy/UserCenterStrategy.java
new file mode 100644
index 0000000..b95d7ab
--- /dev/null
+++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/session/strategy/UserCenterStrategy.java
@@ -0,0 +1,69 @@
+package com.lyms.platform.operate.web.session.strategy;
+
+import com.lyms.platform.common.base.LoginContext;
+import com.lyms.platform.common.exception.TokenException;
+import com.lyms.platform.common.utils.LoginUtil;
+import com.lyms.platform.permission.model.Users;
+import com.lyms.platform.permission.service.UsersService;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * 基于用户中心的登录策略
+ *
+ * Created by Administrator on 2016/6/2 0002.
+ */
+
+public class UserCenterStrategy implements ISessionProvider {
+ @Autowired
+ private UsersService usersService;
+ @Value("#{configProperties['login.token']}")
+ private String token;
+ @Value("#{configProperties['login.typeId']}")
+ private String typeId;
+ @Override
+ public LoginContext checkSession(HttpServletRequest request, HttpServletResponse response,String token) {
+ LoginContext loginContext = LoginUtil.checkLoginState(token);
+ if(!loginContext.isLogin()) {
+ throw new TokenException();
+ }
+ Users users = usersService.getUsersByLoginCenterId(loginContext.getId());
+ if(null == users) {
+ throw new TokenException();
+ }
+ loginContext.setId(users.getId());
+ loginContext.setToken(token);
+ request.setAttribute("loginContext", loginContext);
+ return loginContext;
+ }
+
+ @Override
+ public void removeSession(String token) {
+ if(StringUtils.isNotEmpty(token)){
+ LoginUtil.deleteToken(token);
+ }
+ }
+
+ @Override
+ public LoginContext login(String account, String password,String code) {
+ LoginContext loginContext = new LoginContext();
+ loginContext.setErrormsg("服务器内部错误!");
+ loginContext.setErrorcode(-1);
+ if(null != code) {
+ loginContext =LoginUtil.loginByPhone(account, code, typeId, token);
+ }
+ if(null != password) {
+ loginContext = LoginUtil.loginByAccount(account, password, typeId, token);
+ }
+ return loginContext;
+ }
+
+ @Override
+ public LoginContext register(String userId, String phone, String account, String pwd) {
+ return LoginUtil.register(null, phone,account, pwd, token, typeId);
+ }
+}
\ No newline at end of file