리디렉션하지 않고 Seaside 응답에 쿠키를 추가하려면 어떻게 해야 합니까?

StackOverflow https://stackoverflow.com/questions/88306

문제

저는 Seaside에서 작은 웹 애플리케이션을 만들고 있습니다.로그인 구성요소가 있는데 사용자가 로그인한 후 다음 구성요소가 렌더링될 때 쿠키를 함께 보내고 싶습니다.출력할 헤더에 무언가를 추가할 수 있도록 응답을 처리하는 개체에 접근할 수 있는 방법이 있습니까?

쿠키를 설정하려고 하기 때문에 리디렉션하는 것이 꽤 복잡해 보이기 때문에 WASession>>redirectWithCookies를 사용하지 않으려고 합니다.

다음 응답에서 나갈 쿠키를 추가하기 위해 이미 존재하는 다른 방법이 있습니까?

도움이 되었습니까?

해결책

현재 요청 처리의 작업/콜백 단계 중에 쿠키를 추가하는 기본 제공 방법은 없습니다.이는 결함일 가능성이 높으며 이번 호에는 다음과 같이 명시되어 있습니다. http://code.google.com/p/seaside/issues/detail?id=48

이 문제는 현재 Seaside 2.9에서 수정될 예정이지만 2.8로 백포트될지 여부는 알 수 없습니다.

새로 고침이 콜백을 다시 트리거하는 것을 방지하기 위해 작업 단계와 렌더링 단계 사이에 이미 (기본적으로) 리디렉션이 있으므로 전체적인 계획에서 이 경우 하나 이상의 리디렉션은 그렇지 않습니다. 그래서 나쁜.

더 자세히 알아보고 싶다면 WARenderContinuation>>handleRequest:를 살펴보세요.콜백 처리가 트리거되고 리디렉션 또는 렌더링 단계가 시작되는 곳입니다.

다음을 추가하도록 편집되었습니다.

이제 문제가 해결되었으며 (최신 개발 코드에서) 언제든지 현재 응답에 쿠키를 적절하게 추가할 수 있습니다.현재 요청 컨텍스트에서 응답 개체에 액세스하고 쿠키를 추가하기만 하면 됩니다.예를 들어 다음과 같은 작업을 수행할 수 있습니다.

self requestContext response addCookie: aCookie

응답 처리 방식에 상당히 큰 변화가 필요했기 때문에 Seaside 2.8로 백포트될 가능성은 없습니다.

다른 팁

방금 이것에 대해 깊이 조사했는데 대답은 '아니요'인 것 같습니다.특히, WARenderCanvas 또는 WARenderCanvas가 액세스할 수 있는 모든 것에서 응답을 얻을 수 있는 방법이 없습니다. WARenderingContext는 응답의 WAHtmlStreamDocument를 보유하고 있습니다. 개울 그러나 응답 자체는 아닙니다).나는 헤더를 설정할 수 있도록 현재 응답에 대한 컨텍스트 액세스를 제공하는 것이 합리적이라고 생각하지만 이미 방법이 있는지 물었습니다.아니요.

즉, Seaside는 추가 리디렉션을 많이 수행하고 사용자 경험에 큰 영향을 미치지 않는 것 같습니다. 따라서 복잡해 보이는 것에 대해 걱정하지 말고 이미 존재하는 API의 흐름을 따르는 것이 좋습니다. 거기 :)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top