2009-09-27 2 views
1

싱글 사인온 솔루션이 있습니다. 즉, 사용자가 한 사이트에 로그인하여 다른 사이트로 리디렉션됩니다. 사용자를 리디렉션 할 때 사용자의 인증 상태를 확인하는 데 사용할 수있는 키를 전달하려고합니다.asp.net을 사용하여 사용자를 리디렉션하고 POST 데이터를 동시에 변경하는 방법은 무엇입니까?

싱글 사인온의 예제 중 대부분은 암호화 된 키를 전달하는 로그인 사이트에 쿼리 문자열 값이 있음을 보여줍니다. 이것이 REST-ful이 아니거나 원하는 것이 무엇이든간에 이것은 매우 좋은 해결책이라고 생각하지 않습니다. 대신 POST 데이터에 암호화 된 키를 전달하고 싶습니다. 따라서 사용자가 로그인하면 다른 URL로 게시됩니다.

불행히도 Response.Redirect 또는 Server.Transfer을 사용하여이 작업을 수행하는 방법을 알지 못합니다. 나는 Response.Redirect이 리디렉션 될 때 함께 동일한 POST 데이터를 전달한다고 생각합니다.

누군가 리디렉션하는 동안 POST 데이터를 변경하여 asp.net에서 웹 사이트 사용자를 리디렉션하는 방법을 알고 있습니까?

(보너스 질문 : 당신은 리디렉션 동안 POST로 GET을 변경할 수 있습니까?)

답변

3

Server.Transfer이 전환에서 폼 데이터 (POST 값)을 유지하는 기능을 가지고, 그것은 본질적으로 같은 요청을 전송 전송하기 때문에 사용자가 새 끝점으로 이동합니다.

Request.Redirect "리디렉션은 본질적으로"여기에 대신 있습니다 "라고 말한 최종 사용자에게 응답을 보내므로 POST 데이터를 지속 할 수 없습니다. 그런 다음, 클라이언트는 새 엔드 포인트에 대한 새 요청을 시작합니다. 클라이언트는 별도의 두 번째 요청에서 POST 데이터를 다시 제출하지 않습니다.

그러나 POST 나 GET만으로는 다소 RESTful이 아니며 두 가지 모두 데이터 문자열이며 요청의 약간 다른 부분에 있습니다. querystring-less URL을 깨끗하게 처리하면 "REST-y"로 보일 수 있지만 외관상입니다.

다음은 서로 다른 두 가지 접근 방식이 작동하는 방식을 보여주는 다이어그램입니다. 알다시피, 리디렉션의 경우 POST 데이터를 변경하는 것은 대상 URL에 대한 새 요청을 형성하기 위해 클라이언트의 손에 있기 때문에 불가능합니다.

alt text http://rexmorgan.net/rr_vs_st.jpg

+0

당신이 말하고있는 : 새 핸들러에 추가로 데이터를 전달해야하는 경우, 당신은 자신에게 그렇게 할 수 있기 때문에 전송의 경우, 그것은 (기술적으로 가능한 경우에도)에 대한 이해되지 않는다 Server.Transfer를 사용하여 변수를 변경할 수 있습니까? –

+0

POST 데이터입니다. 내가 데이터를 변경하면서 데이터를 보존하는 것에 관심이 없다. –

+0

@ m4bwav 왜 값을 변경 하시겠습니까? 그들은 단지 한 요청에서 다른 요청으로 옮겨지고 있습니다. –

관련 문제