2012-07-24 53 views
1

我正在學習Spring MVC,我無法理解會話數據的存儲位置和方式。用於存儲會話數據的加密cookie

我想實現的是將會話數據存儲在發送給瀏覽器的加密cookie中。這是必要的,因爲我計劃在沒有粘性會話的heroku上運行應用程序。 (這是一個解決方案,我已經與蟒蛇使用,通過使用金字塔和燒杯中,我很喜歡它)

我有這個玩具控制器

public class HelloController implements Controller { 

    protected final Log logger = LogFactory.getLog(getClass()); 

    public ModelAndView handleRequest(HttpServletRequest request, 
             HttpServletResponse response) 
      throws ServletException, IOException { 

     logger.info("Returning hello view"); 

     Map<String, Object> myModel = new HashMap<String, Object>(); 
     myModel.put("key", "value"); 

     return new ModelAndView("hello", "model", myModel); 
    } 
} 

如果我叫會發生什麼

 HttpSession session = request.getSession(); 

在handleRequest方法中?我認爲會話在不存在的情況下開始,否則返回現有會話。但會話存儲在哪裏?在具有Cookie的瀏覽器中?或者別的地方?

如何指定會話必須放入Cookie中並設置必須用於加密的密鑰?

回答

0

我想你不能直接告訴spring/web應用程序將會話數據存儲到cookie。

你需要下面做,以達到您的要求

  1. 創建每個cookie用於存儲每一個數據,然後添加cookie來響應

    Cookie c = new Cookie("sessionid", sessionid); 
    res.addCookie(c); 
    
  2. 和讀取Cookie數據從請求

    Cookie[] cookies = req.getCookies(); 
    

在這種情況下,您也將完全控制加密。

要自動化此過程意味着將會話數據同步到cookie,您將能夠編寫方面處理程序。

+0

你知道春天在哪裏存儲會話嗎? – 2012-07-24 14:31:49

+0

我不認爲它與spring有什麼關係,它只會是HTTPSession,並且會在內存中。 – 2012-07-24 14:34:24