[针对项目]通过手机验证码认证上网

1.先在addloginpage.html中添加相关按钮 

<div class="button authbutto" style="float:left;">

<a class="phone" id="phone" href="#" οnclick="toggleDiv(this);">使用手机验证登录</a>

</div>

2.在loginDesignAuth.js中添加手机认证

/*添加手机认证*/
$('body').append('<div id="phoneDraggableDiv" class="button authbutton" style="float:left; display:none;"><div class="phone" id="phones"style="width:220px;border:solid 1px red"><input type="text" id="phoneNum" class="num"/><input id="getNum" class="but" type="button" value="免费获取" οnclick="sendMsm()" disabled="true"/><br/><input type="text" id="num" class="num"/><input class="but" type="button" value="验证上网" οnclick="checkRandom()"/></div></div>');
$('#phoneDraggableDiv').draggable({   
   handle:'#phones',
   onDrag:onDrag
});

3.还是在js页面添加相关方法

function checkRandom(){
    var text = $("#num").val();
    $.ajax({
        type: "POST",
        url: "../../checkRandom/",
        data: {
            randomKey: text
        },
        success: function(msg){
            if (msg == '上网口令错误!') {
                alert(msg);
            }
            else {
                window.location.href = "../../"+msg;
            }
        }
    });
}
/**
 * 获取上网口令
 */
function sendMsm(){
   var text = $("#phoneNum").val();
    if (!(/(^1[3|4|5|8][0-9]\d{4,8}$)/.test(text))){  
    alert("请输入正确的手机号!");
    return;
     }
    $.ajax({
        type: "POST",
        url: "../../sendMsg/",
        data: {
            phoneNum: text
        },
        success: function(msg){
setInterval("countDown()", 1000);
$('#getNum').attr({"disabled":"true"});
            alert(msg);
        }
    });
}
var i = 60;
function countDown(){
    $('#getNum').val('还剩' + i + '秒可重新获取上网');
if(i==0){
$('#getNum').val("免费获取");
$('#getNum').removeAttr("disabled");
return;
}
    i--;
}

4.自己写SendMsg工具类SendMsg.java

package com.xerxes.util;


import com.shcm.send.DataApi;
import com.shcm.send.OpenApi;


public class SendMsg {
private static String sOpenUrl = "http://smsapi.c123.cn/OpenPlatform/OpenApi";
private static String sDataUrl = "http://smsapi.c123.cn/DataPlatform/DataApi";
// 接口帐号
private static final String account = "1001@500928820001";
// 接口密钥
private static final String authkey = "C6F72D705196E633CD14973337E07520";
// 通道组编号
private static final int cgid = 52;
// 默认使用的签名编号(未指定签名编号时传此值到服务器)
private static final int csid = 0;


/**
* 给指定的手机号发送短信

* @param phoneNum
*            手机号
* @param randomKey
*            随机生成的上网密码
* @return 返回true则是发送成功,false则是发送失败
*/
public static boolean send(String phoneNum, String randomKey) {
try {
// 发送参数
OpenApi.initialzeAccount(sOpenUrl, account, authkey, cgid, csid);
// 状态及回复参数
DataApi.initialzeAccount(sDataUrl, account, authkey);
// 取帐户余额
double dReamin = OpenApi.getBalance();
System.out.println("可用余额: " + dReamin);
// 发送短信
String sContent = "this is your network password:" + randomKey + "[OpenWifi]";
String sSend = new String(sContent.getBytes(), "UTF-8");
int nRet = OpenApi.sendOnce(phoneNum, sSend, 0, 0, null);
if (nRet > 0) {
return true;
} else {
return false;
}
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
}

5.在WifiDogAction.java中添加两个方法:

/**
* 发送短信接口
* 随机码可用时间为五分钟
*/
public void sendMsg(){
try {
//生成六位随机上网码
for (int i = 0; i < 6; i++) {
randomKey += (int)(10*Math.random());
}


if (SendMsg.send(phoneNum, randomKey)) {
//将手机号和随机码保存到数据
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
RandomKeyAuth randomKeyAuth = new RandomKeyAuth();
randomKeyAuth.setCreatedt(Timestamp.valueOf(sdf.format(new Date())));
randomKeyAuth.setCreattype(PHONE);
randomKeyAuth.setIsused(UNUSED);
randomKeyAuth.setKeymsg(randomKey);
Calendar nowTime = Calendar.getInstance();
nowTime.add(Calendar.MINUTE, 5);
randomKeyAuth.setUseddt(Timestamp.valueOf(sdf.format(nowTime.getTime())));
randomKeyAuthService.save(randomKeyAuth);
outPrint("请注意查收短信!");
}else {
outPrint("短发发送失败,请重试");
}
} catch (Exception e) {
e.printStackTrace();
outPrint("短发发送失败,请重试");
}
}

/**
* 验证随机上网码是否有效
*/
public void checkRandom(){
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
criterions = new ArrayList<Criterion>();
criterions.add(Restrictions.eq("keymsg", randomKey));
criterions.add(Restrictions.eq("isused", UNUSED));
criterions.add(Restrictions.ge("useddt", Timestamp.valueOf(sdf.format(new Date()))));
RandomKeyAuth randomKeyAuth = randomKeyAuthService.executeQueryUnique(criterions, null);
if(randomKeyAuth != null){
randomKeyAuth.setIsused(USE);
randomKeyAuthService.saveOrUpdate(randomKeyAuth);
getSession().setAttribute("loginType", "5");
outPrint("oneKey/");
}else {
outPrint("上网口令错误!");
}
} catch (Exception e) {
e.printStackTrace();
}
}

6.在wifiAuth.xml添加

<package name="sendMsg" extends="struts-default" namespace="/sendMsg">
<action name="*" class="com.xerxes.action.WifiDogAction" method="sendMsg">
</action>
</package>
<package name="checkRandom" extends="struts-default" namespace="/checkRandom">
<action name="*" class="com.xerxes.action.WifiDogAction" method="checkRandom">
</action>
</package>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值