package com.vci.ubcs.code.service.impl;
|
|
import com.vci.ubcs.code.service.IPasswordFreeLoginService;
|
import com.vci.ubcs.code.util.HttpUtils;
|
import org.apache.commons.collections4.MultiValuedMap;
|
import org.apache.commons.collections4.multimap.ArrayListValuedHashMap;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.cloud.client.ServiceInstance;
|
import org.springframework.cloud.client.discovery.DiscoveryClient;
|
import org.springframework.http.HttpEntity;
|
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.MediaType;
|
import org.springframework.http.ResponseEntity;
|
import org.springframework.stereotype.Service;
|
import org.springframework.util.LinkedMultiValueMap;
|
import org.springframework.util.MultiValueMap;
|
import org.springframework.http.HttpMethod;
|
import org.springframework.web.client.RestTemplate;
|
|
import javax.annotation.Resource;
|
import java.util.List;
|
|
/**
|
* 免密登录服务
|
* @author ludc
|
* @date 2023/9/11 15:45
|
*/
|
@Service
|
public class PasswordFreeLoginServiceImpl implements IPasswordFreeLoginService {
|
|
// 通过服务注册中心获取网关的端口号
|
@Autowired
|
private DiscoveryClient discoveryClient;
|
|
/**
|
* 获取网关端口
|
* @return
|
*/
|
public String getGatewayPort() {
|
List<ServiceInstance> instances = discoveryClient.getInstances("ubcs-gateway");
|
if (!instances.isEmpty()) {
|
ServiceInstance gatewayInstance = instances.get(0);
|
return String.valueOf(gatewayInstance.getPort());
|
}
|
return "80";
|
}
|
|
/**
|
* 免密登录
|
* @param username 账号
|
* @return
|
*/
|
@Override
|
public boolean passwordFreeLogin(String username) {
|
// 免密登录接口地址
|
String loginUrl = "http://localhost:"+this.getGatewayPort()+"/ubcs-auth/oauth/password-free-login";
|
|
// 设置请求头
|
HttpHeaders headers = new HttpHeaders();
|
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
|
headers.set("Authorization", "Basic c3dvcmQ6c3dvcmRfc2VjcmV0");
|
headers.set("Tenant-Id", "000000");
|
|
//设置请求体参数
|
MultiValueMap<String,String> parameters = new LinkedMultiValueMap<String,String>();
|
parameters.add("username",username);
|
parameters.add("grant_type", "captcha");
|
parameters.add("scope", "all");
|
parameters.add("type", "account");
|
|
// 发送POST请求
|
String responseBody = HttpUtils.post(loginUrl, parameters,headers);
|
System.out.println(responseBody);
|
//拿到响应体将token存入到redis中,以account作为存储的key
|
|
// 解析响应体获取令牌
|
// 这里假设响应体是JSON格式,包含一个名为"token"的字段
|
// 根据实际情况进行解析
|
// JSONObject json = new JSONObject(responseBody);
|
// String token = json.getString("token");
|
|
return false;
|
}
|
|
|
}
|