我正在使用JSF 2.0,因为我一直在搜索加密的cookie作为会话的替代方案已经有一段时间了。我听说过“ASP.NET MVC 4”中有类似的内容。
所以问题是:有没有办法使用cookie代替会话来存储数据 JSF 2.0?如果答案是肯定的,那么这是一个好习惯吗?
感谢您的评论。
答案 0 :(得分:3)
如果您正在使用setAttribute
和getAttribute
HttpSession,那就是您要用Cookie替换的内容(可能是为了节省服务器内存),那么您可以轻松地将这些数据保存到Cookie中HttpServletResponse.addCookie
和HttpServletRequest.getCookies
。
现在这是否是一个好主意,取决于你的用例。
答案 1 :(得分:0)
使用cookies的方法就是这样:
写入cookie:
FacesContext.getCurrentInstance()
.getExternalContext()
.addResponseCookie("CookieName", "value", null);
阅读cookie
Map<String, Object> requestCookieMap = FacesContext.getCurrentInstance()
.getExternalContext()
.getRequestCookieMap();
我认为没有“最佳实践”,您应该只考虑JSF以广泛的方式使用会话,因此风险是您有一个很好的会话大小。 Cookie可以帮助您避免过多的会话。
答案 2 :(得分:0)
Cookie是网络的重要组成部分,但通常我会尽量避免将其用于会话管理以外的任何内容。如果您不想在服务器上存储用户会话,请使用客户端状态保存。您需要使任何会话对象可序列化,但可能您正在做类似的事情,以便将状态存储在cookie中。除非您的服务器受到内存限制,否则我只需坚持服务器端会话存储,因为它可以节省带宽。