package com.imooc.myo2o.web.jnyth;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.google.gson.Gson;
import com.imooc.myo2o.util.TokenCache;
import com.imooc.myo2o.util.TokenProcessor;
/**
* @ClassName: JnythSSOController
* @Description:For Jnyth SSO Server
* @author: chengsp
* @date: 2018年11月7日 下午4:18:59
*
*/
@Controller
@RequestMapping("/jnyth")
public class JnythSSOController {
Logger logger = LoggerFactory.getLogger(JnythSSOController.class);
/**
* @Title: doLogin
* @Description: Unified login interface
* @param: @param userID 用户账号
* @param: @param isSuccess 登录是否成功
* @param: @param request 请求域
* @return: token Be equal to null is fail
* token Be no equal to null is success
* @author: chengsp
* @date: 2018年11月7日 下午5:22:27
* @throws
*/
@RequestMapping(value="/doLogin",method=RequestMethod.GET)
@ResponseBody
private String doLogin(String userID,boolean isSuccess,String macID,HttpServletRequest request){
logger.info("====into sso server doLogin start====");
String token = null;
//Login success
if(isSuccess){
logger.info("setting login information to TokenCache");
token = TokenProcessor.getInstance().generateTokeCode();
TokenCache.setkey("isLogin"+macID, "true");
TokenCache.setkey("userID"+macID, userID);
TokenCache.setkey("token"+macID, token.replace("+", "="));
}
logger.info("====into sso server doLogin end====");
return token;
}
/**
* @Title: isNeedLogin
* @Description: Unified Is login interface
* @param: request
* @return: "1" is login
* "0" is no login
* @author: chengsp
* @date: 2018年11月7日 下午5:26:09
* @throws
*/
@RequestMapping(value="/isNeedLogin",method=RequestMethod.GET)
@ResponseBody
private String isNeedLogin(String macID){
//result set
Map<String, Object> resultMap = new HashMap<String, Object>();
//If login, it will be released directly.Set success result set
System.out.println("检验时获取macID="+macID);
if("true".equals(TokenCache.getKey("isLogin"+macID))){
logger.info("User is logged in, set parameters");
String userID = TokenCache.getKey("userID"+macID);
String token = TokenCache.getKey("token"+macID);
resultMap.put("userID",userID);
resultMap.put("token", token);
resultMap.put("status", true);
Gson gson = new Gson();
return gson.toJson(resultMap).toString();
}else{
//If no login,Return to state 0, notify the login page of the request system.
return "0";
}
}
/**
* @Title: tokenCheck
* @Description: Verify whether the token carried by the user is valid.
* @param: reqToken
* @param: request
* @return: String
* @author: chengsp
* @date: 2018年11月7日 下午6:41:57
* @throws
*/
@RequestMapping(value="/tokenCheck",method=RequestMethod.GET)
@ResponseBody
public boolean tokenCheck(String reqToken,String macID){
logger.info("User request validation token");
String token = TokenCache.getKey("token"+macID);
if(null != token && token.equals(reqToken)){
logger.info("Verification success");
return true;
}
logger.info("Verification failure");
return false;
}
/**
* @Title: logout
* @Description: Unified logout interface
* @param: @param reqToken
* @param: @param request
* @return: boolean
* @author: chengsp
* @date: 2018年11月7日 下午6:58:35
* @throws
*/
@RequestMapping(value="/logout",method=RequestMethod.GET)
@ResponseBody
public boolean logout(String reqToken,String macID){
String token = TokenCache.getKey("token"+macID);
logger.info("Subsystem request to exit wait clean token");
if(null != token && token.equals(reqToken)){
//clean token
TokenCache.cleanKey("isLogin"+macID);
TokenCache.cleanKey("userID"+macID);
TokenCache.cleanKey("token"+macID);
logger.info("Exit success");
return true;
}
logger.info("Exit failure");
return false;
}
}