我正在 Seaside 中制作一个小型 Web 应用程序。我有一个登录组件,在用户登录后,我想在下一个组件呈现时发送一个 cookie。有没有办法获取处理响应的对象,以便我可以向它将输出的 header 添加一些内容?
我试图避免使用 WASession>>redirectWithCookies,因为仅仅因为我想设置一个 cookie 而重定向似乎很笨拙。
是否已经存在另一种方法来添加将在下一次响应时发出的 cookie?
最佳答案
目前没有内置方法可以在请求处理的操作/回调阶段添加 cookie。这很可能是一个缺陷,并在本期中指出:http://code.google.com/p/seaside/issues/detail?id=48
目前计划为 Seaside 2.9 修复此问题,但我不知道它是否会向后移植到 2.8。
请记住,在 Action 和渲染阶段之间已经存在(默认情况下)重定向,以防止刷新重新触发回调,因此在宏伟的计划中,在这种情况下不会再进行重定向太不好了。
如果您还想深入了解,请查看 WARenderContinuation>>handleRequest:。这就是触发回调处理并开始重定向或呈现阶段的地方。
编辑添加:
该问题现已修复,(在最新的开发代码中)您现在可以随时将 cookie 添加到当前响应中。只需访问当前请求上下文中的响应对象并添加 cookie。例如,您可以执行以下操作:
self requestContext response addCookie: aCookie
这不太可能向后移植到 Seaside 2.8,因为它需要对响应处理方式进行相当大的转变。
关于http - 如何在不重定向的情况下将 cookie 添加到 Seaside 响应中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/88306/