1

我有一个单点登录解决方案,这意味着用户将登录到一个站点并被重定向到另一个站点。当我重定向用户时,我想传递一个可用于验证用户身份验证状态的密钥。

我阅读的大多数单点登录示例都显示传递加密密钥的登录站点具有查询字符串值。我不认为这是一个很好的解决方案,因为它不是非常 REST-ful 或任何你想称之为的。相反,我想在POST数据中传递加密密钥。因此,当用户登录时,他们正在发布到另一个 url。

不幸的是,我(还)不知道如何使用Response.Redirector来做到这一点Server.Transfer。我认为Response.Redirect在重定向时会传递相同的 POST 数据。

有人知道如何在 asp.net 中重定向网站用户,在重定向时更改 POST 数据吗?

(额外的问题:你可以在重定向时将 GET 更改为 POST 吗?)

4

1 回答 1

3

Server.Transfer能够在转换中维护表单数据(POST 值),因为它本质上是将用户发送的相同请求传输到新端点。

Request.Redirect无法保留 POST 数据,因为重定向本质上是将响应发送回最终用户,上面写着“改为转到此处”。然后,客户端向该新端点发起一个新请求。客户端不会在第二个单独的请求中重新提交 POST 数据。

但是,无论是 POST 还是 GET 本身都或多或少是 RESTful 的——两者都是数据字符串,只是在请求的略有不同的部分。拥有干净、无查询字符串的 URL 可能“看起来像 REST-y”,但它是装饰性的。

这是两种不同方法如何工作的图表。如您所见,在 Redirect 情况下,根本不可能更改 POST 数据,因为它是在客户端手中形成对目标 URL 的新请求;在 Transfer 案例中,(即使在技术上可行)是没有意义的,因为如果您确实需要将其他数据传递给新的处理程序,您可以自己这样做:

替代文字 http://rexmorgan.net/rr_vs_st.jpg

于 2009-09-27T00:42:32.220 回答