package com.hanyixin.service;
public interface SecurityService {
//密钥提供者微服创建接口
String getkey();
}
package com.hanyixin.service.impl;
import java.util.Random;
import org.apache.dubbo.config.annotation.Service;
import com.hanyixin.service.SecurityService;
@Service(interfaceClass = SecurityService.class)
public class SecurityServiceImpl implements SecurityService {
@Override
public String getkey() {
Random random = new Random();
String s = "";
//密钥提供者微服随机生成16位密钥字符串
for (int i = 0; i < 16; i++) {
char c = (char) ('a'+random.nextInt(26));
s += c;
}
return s;
}
}
package com.hanyixin.controller;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.hanyixin.service.SecurityService;
@Controller
public class SecurityController {
@Reference
SecurityService securityService;
//密钥请求微服创建controller
@RequestMapping("tojsp")
public String tojsp() {
//跳转到页面
return "jsp";
}
//密钥请求微服的controller能够获取密钥
@ResponseBody
//加载时自动发送ajax请求
@RequestMapping("getkey")
public String getkey(HttpServletRequest request,HttpServletResponse response){
String key = securityService.getkey();
//将密钥存入localStorag或cookie中
response.addCookie(new Cookie("mycookiekey",key));
return key;
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<!-- 引入 css -->
<link rel="stylesheet" type="text/css" href="/resource/bootstrap4/css/bootstrap.css">
<!-- 引入js -->
<script type="text/javascript" src="/resource/jquery/jquery-3.4.1.js"></script>
<title>Insert title here</title>
</head>
<body>
<script type="text/javascript">
function getkey() {
alert("准备获取key");
$.post("getkey",{},function(data){
alert("获取到的key是"+data);
})
}
getkey();
</script>
</body>
</html>