鍍金池/ 問答/Java/ 在spring中為何兩次請求的session不是同一個session

在spring中為何兩次請求的session不是同一個session

這是第一次的請求,把random存儲在session中

@RequestMapping(value = "/val.do", method = {RequestMethod.POST})
    @ResponseBody
    public String val(@RequestBody Map<String,String> phone,HttpServletRequest req) {
        int randNum = 1 + (int)(Math.random() * ((999999 - 1) + 1));
        HttpSession session = req.getSession();
        if(session.getAttribute("val")==null) {
            session.setAttribute("val", randNum);
            session.setMaxInactiveInterval(1200);
        }
}

這是第二次的請求,為何第二次請求中session.getAttribute("val")為null,明明在第一次已經(jīng)寫近session了
@RequestMapping(value = "/regester.do", method = {RequestMethod.POST})

@ResponseBody
public String reg(@RequestParam("val") String val,
                  HttpServletResponse response,
                  HttpServletRequest req) {
            HttpSession session = req.getSession();
            System.out.println(val);
            System.out.println(session.getId());
            if(val!=session.getAttribute("val")){
                return "false";
            }
  }
回答
編輯回答
巫婆

你直接先比較一下sessionid,看看sessionid是不是同一個先

2018年5月18日 08:31
編輯回答
貓小柒

你獲取下sessionId呢。

2018年2月1日 05:53
編輯回答
冷眸

應(yīng)該是超時了吧

2018年5月13日 10:26
編輯回答
舊城人

建議先在瀏覽器端調(diào)試下看response是否返回帶有Set-Cookie的頭信息, 沒有的話很遺憾, 每次請求都是一個全新的session. 檢查依賴包是否包含用戶認(rèn)證模塊, 如spring-security, shiro 等

2018年2月17日 05:28
編輯回答
浪蕩不羈

這是session跨域共享的問題吧,session.setAttribute寫入的sessionId的domain不一樣導(dǎo)致在里另一個域取不到cookie,可以把信息存儲在Redis里面吧。

2017年7月3日 00:45
編輯回答
凹凸曼

首先,你用的是同一個電腦的同一個瀏覽器發(fā)送的請求嗎?

2017年6月12日 09:12
編輯回答
獨(dú)特范
@ResponseBody
public String reg(@RequestParam("val") String val,
                  HttpServletResponse response,
                  HttpServletRequest req) {
            HttpSession session = req.getSession();
            System.out.println(val);
            System.out.println(session.getId());
            **if(val!=session.getAttribute("val")){
                return "false";
            }**
  }
if(val.equals((String)session.getAttribute("val"))){
    return "false";
}

除了數(shù)字,其他都不要用 == != 來比較

2018年2月24日 01:39