Commit 61d1ca3b authored by Java-刘 彧阳's avatar Java-刘 彧阳

高仿一个函谷关的登录验证接口的返回,实际已去函谷关验证用户登录了

parent ee380f09
package cn.quantgroup.xyqb.controller.internal.login; package cn.quantgroup.xyqb.controller.internal.login;
import cn.quantgroup.xyqb.controller.IBaseController; import cn.quantgroup.xyqb.controller.IBaseController;
import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.exception.ResponseException;
import cn.quantgroup.xyqb.model.JsonResult; import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.model.UserRet; import cn.quantgroup.xyqb.model.UserRet;
import cn.quantgroup.xyqb.model.session.LoginInfo; import cn.quantgroup.xyqb.model.session.LoginInfo;
import cn.quantgroup.xyqb.model.session.SessionStruct; import cn.quantgroup.xyqb.model.session.SessionStruct;
import cn.quantgroup.xyqb.service.http.IHttpService;
import cn.quantgroup.xyqb.service.user.IUserService;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.ImmutableMap;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.util.Map;
/** /**
* Created by Miraculous on 2016/12/30. * Created by Miraculous on 2016/12/30.
...@@ -15,18 +29,56 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -15,18 +29,56 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/auth") @RequestMapping("/auth")
public class AuthInfoController implements IBaseController { public class AuthInfoController implements IBaseController {
@Value("${xyqb.auth.url}")
private String xyqbAuthUrl;
@Autowired
private IHttpService httpService;
@Autowired
private IUserService userService;
@RequestMapping("/info/login") @RequestMapping("/info/login")
public JsonResult loginInfo() { public JsonResult loginInfo() {
SessionStruct sessionStruct = getSessionStruct(); SessionStruct sessionStruct = getSessionStruct();
LoginInfo loginInfo = new LoginInfo(); if(null != sessionStruct) {
loginInfo.setUser(UserRet.getUserRet(sessionStruct.getValues().getUser())); LoginInfo loginInfo = new LoginInfo();
loginInfo.setToken(sessionStruct.getSid()); loginInfo.setUser(UserRet.getUserRet(sessionStruct.getValues().getUser()));
LoginInfo.LoginContext context = new LoginInfo.LoginContext(); loginInfo.setToken(sessionStruct.getSid());
context.setChannelId(sessionStruct.getValues().getLoginProperties().getChannelId()); LoginInfo.LoginContext context = new LoginInfo.LoginContext();
context.setCreatedFrom(sessionStruct.getValues().getLoginProperties().getCreatedFrom()); context.setChannelId(sessionStruct.getValues().getLoginProperties().getChannelId());
context.setAppChannel(sessionStruct.getValues().getLoginProperties().getAppChannel()); context.setCreatedFrom(sessionStruct.getValues().getLoginProperties().getCreatedFrom());
loginInfo.setLoginContext(context); context.setAppChannel(sessionStruct.getValues().getLoginProperties().getAppChannel());
return JsonResult.buildSuccessResult("", loginInfo); loginInfo.setLoginContext(context);
return JsonResult.buildSuccessResult("", loginInfo);
}else {
// 函谷关去查token 返回值高仿
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("x-auth-token");
if(StringUtils.isBlank(token) ||token.length() != 36){
return JsonResult.buildErrorStateResult("用户未登录",null);
}
String checkUrl = xyqbAuthUrl+"/innerapi/is_login";
ImmutableMap<String, String> headMap = ImmutableMap.of("x-auth-token", token);
String response = httpService.get(checkUrl, headMap, null);
JsonResult result = JSONObject.parseObject(response, JsonResult.class);
if (result == null || !"0000".equals(result.getCode()) || !"0000".equals(result.getBusinessCode())) {
return JsonResult.buildErrorStateResult("用户未登录",null);
}
String phoneNo = ((Map<String, String>) result.getData()).get("phoneNo");
User user = userService.findByPhoneWithCache(phoneNo);
LoginInfo loginInfo = new LoginInfo();
loginInfo.setUser(UserRet.getUserRet(user));
loginInfo.setToken(token);
LoginInfo.LoginContext context = new LoginInfo.LoginContext();
context.setChannelId(null);
context.setCreatedFrom(user.getRegisteredFrom());
context.setAppChannel("");
loginInfo.setLoginContext(context);
return JsonResult.buildSuccessResult("", loginInfo);
}
} }
} }
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