sessionId在小程序中的妙用


前言:小程序發送短信驗證碼需要在后台儲存生成的code,一次會話應放入session中,請求頭部發送sessionId驗證為同一session

1.頁面一加載就從后台獲取sessionId,儲存在本地緩存中

 

 后台:

    /**
     * 獲得sessionId
     */
    @RequestMapping("/getSessionId")
    @ResponseBody
    public Object getSessionId(HttpServletRequest request) {
        try {
            HttpSession session = request.getSession();
            return session.getId();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

2.發送驗證碼時在頭部攜帶 "Cookie": sessionId,然后將電話號碼傳給后台

    /**
     * 發送短信驗證碼
     * @param phoneNum 接收手機號碼
     */
    @RequestMapping(value = "/sendMsg",method = RequestMethod.POST)
    public Object sendSms(HttpServletRequest request, String phoneNum) {
        try {
            JSONObject json = null;
            //生成6位驗證碼
            String verifyCode = String.valueOf(new Random().nextInt(899999) + 100000);
            AliyunMessage.sendMessage(phoneNum,verifyCode);
            //將驗證碼存到session中,同時存入創建時間
            //以json存放,這里使用的是阿里的fastjson
            HttpSession session = request.getSession();
            json = new JSONObject();
            json.put("verifyCode", verifyCode);
            json.put("createTime", System.currentTimeMillis());
            // 將認證碼存入SESSION
            request.getSession().setAttribute("verifyCode", json);
            return "success";
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

3.驗證驗證碼

前台發送請求驗證時同樣需要攜帶sessionId的頭部

    /**
     * 驗證
     */
    @RequestMapping(value = "/verification",method = RequestMethod.POST)
    @ResponseBody
    public Object addinfo(
            HttpServletRequest request,
            String phoneNum,
            String code) {
        JSONObject json = (JSONObject)request.getSession().getAttribute("verifyCode");
        if(!json.getString("verifyCode").equals(code)){
            return "驗證碼錯誤";
        }
        if((System.currentTimeMillis() - json.getLong("createTime")) > 1000 * 60 * 5){
            return "驗證碼過期";
        }
        return "success";
    }

從session中獲取code,然后與傳過來的code相比較

這里設置的失效時間為5分鍾


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM