2013-09-25 66 views
0

目標:隱藏頁面URL中的鍵/值對。例如。 - http://abc.xyz.com/nav/book?clientID=390&fundID=-1&navDate=-1隱藏URL中的彈簧會話bean參數值

我不希望clientID等在URL中可見(安全原因)。 我知道http是一個無狀態協議。目前使用的春天 「會話」

我使用HttpSession中,春@SessionAttributes試過了,範圍的bean -

@Component 
@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS) 
public class UserSession { 

    private String clientID; 
    private String fundID; 
    private String navDate; 

    public String getClientID() { 
     return clientID; 
    } 
    public void setClientID(String clientID) { 
     this.clientID = clientID; 
    } 
    public String getFundID() { 
     return fundID; 
    } 
    public void setFundID(String fundID) { 
     this.fundID = fundID; 
    } 
    public String getNavDate() { 
     return navDate; 
    } 
    public void setNavDate(String navDate) { 
     this.navDate = navDate; 
    } 
} 

而且用它我控制器 -

@Controller 
@SessionAttributes(value = {"client","fund","nav"}) 
public class HomeController { 
    @Autowired 
    private UserSession userSession; 

    @RequestMapping(value = "abc", method = RequestMethod.GET) 
    public ModelAndView navWorkbook(Model model, HttpServletRequest request, HttpServletResponse response, 
      @RequestParam(required = false) String clientID, 
      @RequestParam(required = false) String fundID, 
      @RequestParam(required = false) String navDate) { 
     ModelAndView modelAndView = new ModelAndView("abcd"); 
     . 
     . 
     . 
     userSession.setClientID(clientID); 
     userSession.setFundID(fundID); 
     userSession.setNavDate(navDate); 
     modelAndView.addObject("userSession", userSession); 
     return modelAndView; 
    } 
} 

有沒有辦法隱藏URL中顯示的spring bean的屬性名/值?

謝謝你們

回答

0

在請求映射,你必須使用RequestMethod.POST,而不是RequestMethod.GET

@RequestMapping(value = "abc", method = RequestMethod.POST) 
+0

奏效謝謝你,所以你可以告訴我1),其中,由於HTTP畢竟是無狀態的存儲該數據如果不是URL? 2.)爲什麼在訪問bean屬性時post和get不同? –

+1

@kaustavdatta HTTP協議不會強制HTTP服務器讀取GET HTTP請求的主體。因爲這樣的請求參數需要在URL中發送。然而,HTTP POST強制服務器讀取請求主體。因此,您可以將url編碼的請求參數直接放在主體中。 –

+0

@kaustavdatta但它是如何工作在重定向:值,bcose重定向僅適用於RequestMethod.GET –