|
@ -4,12 +4,18 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
import com.yihu.ehr.agModel.user.UserDetailModel;
|
|
|
import com.yihu.ehr.iot.util.http.HttpHelper;
|
|
|
import com.yihu.ehr.iot.util.http.HttpResponse;
|
|
|
import com.yihu.ehr.iot.util.spring.SpringContextHolder;
|
|
|
import com.yihu.ehr.util.rest.Envelop;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.context.annotation.Configuration;
|
|
|
import org.springframework.security.core.session.SessionInformation;
|
|
|
import org.springframework.security.core.session.SessionRegistry;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
import javax.annotation.PostConstruct;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import java.io.IOException;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.Map;
|
|
@ -22,29 +28,20 @@ import java.util.concurrent.ConcurrentHashMap;
|
|
|
@Component
|
|
|
public class CurrentRequest {
|
|
|
|
|
|
@Value("${service-gateway.profileInnerUrl}")
|
|
|
protected String profileInnerUrl;
|
|
|
|
|
|
@Autowired
|
|
|
private ObjectMapper objectMapper;
|
|
|
|
|
|
public static Map<String,UserDetailModel> userMap = new ConcurrentHashMap<>(1000);
|
|
|
SessionRegistry sessionRegistry;
|
|
|
|
|
|
public UserDetailModel getCurrentUserByName(String username) throws IOException {
|
|
|
/**
|
|
|
* 获取当前登录用户,当前已登录的用户都缓存在session中
|
|
|
* @param request
|
|
|
* @return
|
|
|
*/
|
|
|
public UserDetailModel getCurrentUser(HttpServletRequest request){
|
|
|
String sessionId = request.getSession().getId();
|
|
|
UserDetailModel user = null;
|
|
|
if(userMap.containsKey(username)){
|
|
|
return userMap.get(username);
|
|
|
}
|
|
|
Map params = new HashMap<>();
|
|
|
params.put("login_code", username);
|
|
|
HttpResponse httpResponse = HttpHelper.get(profileInnerUrl + "/users/" + username, params);
|
|
|
if(httpResponse.getStatusCode() == 200) {
|
|
|
Envelop envelop = this.objectMapper.readValue(httpResponse.getBody(), Envelop.class);
|
|
|
if (envelop.isSuccessFlg()){
|
|
|
String userString = this.objectMapper.writeValueAsString(envelop.getObj());
|
|
|
user = this.objectMapper.readValue(userString, UserDetailModel.class);
|
|
|
userMap.put(username,user);
|
|
|
}
|
|
|
SessionInformation sessionInformation = sessionRegistry.getSessionInformation(sessionId);
|
|
|
if(null != sessionInformation.getPrincipal()){
|
|
|
user = (UserDetailModel)sessionInformation.getPrincipal();
|
|
|
}
|
|
|
return user;
|
|
|
}
|