隐藏秒杀地址
隐藏秒杀接口地址后,确保秒杀开始前没有人知道地址。http是明文传输的,访问的url,参数都可见,若不做隐藏,恶意用户可以在秒杀活动开始前就访问秒杀接口地址。
秒杀项目完整代码地址:https://github.com/yang-mou/miaosha.git
思路:
1、第一次请求后台先验证用户是否登录和验证码是否正确,生成随机地址存入redis并且返回
2、带着地址请求后台,后台从redis中取出地址验证是否正确
3、正确继续执行秒杀逻辑,错误直接返回
秒杀按钮
<button class="btn btn-primary" type="button" id="buyButton"onclick="getMiaoshaPath()">立即秒杀</button>
获取秒杀地址
function getMiaoshaPath(){
var goodsId = $("#goodsId").val();
g_showLoading();
$.ajax({
url:"/miaosha/path",//后台获取秒杀地址
type:"GET",
data:{
goodsId:goodsId,
verifyCode:$("#verifyCode").val()
},
success:function(data){
if(data.code == 0){
//获取到秒杀地址
var path = data.data;
//请求秒杀方法
doMiaosha(path);
}else{
layer.msg(data.msg);
}
},
error:function(){
layer.msg("客户端请求有误");
}
});
}
请求执行秒杀逻辑
function doMiaosha(path){
//秒杀的时候,需要向服务端传递参数
$.ajax({
url:"/miaosha/"+path+"/do_miaosha",//进行秒杀
type:"POST",
data:{
goodsId:$("#goodsId").val()
},
success:function(data){
if(data.code == 0){
//判断秒杀结果
getMiaoshaResult($("#goodsId").val());
}else{
layer.msg(data.msg);
}
},
error:function(){
layer.msg("客户端请求有误");
}
});
}
第一次请求获取秒杀地址
@RequestMapping(value=