package com.fzzy.gateway.hx2023.controller; import com.alibaba.fastjson2.JSONObject; import com.fzzy.api.utils.ContextUtil; import com.fzzy.api.utils.RedisConst; import com.fzzy.api.utils.RedisUtil; import com.fzzy.gateway.entity.GatewayConf; import com.fzzy.gateway.hx2023.data.GatewayAuthData; import com.fzzy.gateway.service.GatewayConfService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.List; /** * */ @Slf4j @Controller @RequestMapping("/sc2023/gateway") public class GatewayController { @Resource private RedisUtil redisUtil; @Resource private GatewayConfService confService; /** * 鉴权接口 * * @return { * "message": "成功", * "result": { * "token":"b2919bed493eca1ee1efb8d3cfa08a" * }, * "status": 0, * "code": 200, * "timestamp": 0 * } */ @PostMapping("/authorize/login") public @ResponseBody JSONObject authorize(@RequestBody GatewayAuthData data) { List list = confService.getCacheConfList(); JSONObject json = new JSONObject(); json.put("timestamp", System.currentTimeMillis()); if (null == list || list.isEmpty()) { json.put("code", 500); json.put("message", "未获取网关信息"); return json; } String gatewayId = null; for (GatewayConf conf : list) { if (data.getUsername().equals(conf.getGatewayUsername()) && data.getPassword().equals(conf.getGatewayPassword())) { gatewayId = conf.getGatewayId(); break; } } if (null == gatewayId) { json.put("code", 500); json.put("message", "未匹配到用户名和密码"); return json; } String token = "fzzy-" + gatewayId; log.debug("============鉴权==========={}--{}--{}", data.getUsername(), data.getPassword(), token); this.updateGatewayToken(token, data.getUsername()); JSONObject result = new JSONObject(); result.put("token", token); json.put("result", result); json.put("message", "成功"); json.put("status", 0); json.put("code", 200); return json; } public void updateGatewayToken(String token, String username) { String key = RedisConst.buildKey(RedisConst.KYE_GATE_TOKEN, username); redisUtil.set(key, token); } public String getGatewayToken(String username) { String key = RedisConst.buildKey(RedisConst.KYE_GATE_TOKEN, username); return (String) redisUtil.get(key); } }