3

如何使用 Janrain RPX 登录获取上一个 url?

我正在使用 Asp.Net MVC 来请求。

4

1 回答 1

5

当匿名用户浏览到安全视图时,asp.net 会自动将他们重定向到登录页面并将 ReturnUrl 放在查询字符串中。您可以通过将 ReturnUrl 附加到 RPX 登录中使用的 token_url 来保留它。

这是我创建的帮助程序,用于在我的登录页面上为 RPX iframe 生成正确的 href:

public static string RpxSignInUrl(this HtmlHelper htmlHelper)
{
    string returnUrl = FormsAuthentication.GetRedirectUrl(
        String.Empty, // userName (not used, but cannot be null)
        false); // persistent cookie (also ignored)

    string tokenUrl = "http://<your-domain>/Account/RpxResponse?ReturnUrl=" +
        HttpUtility.UrlEncode(returnUrl);

    string realm = "<your-app-id>.rpxnow.com";
    string signInUrl = String.Format(
        CultureInfo.InvariantCulture,
        "http://{0}/openid/embed?token_url={1}",
        realm,
        HttpUtility.UrlEncode(tokenUrl));

    return signInUrl;
}

在用户进行身份验证后,RPX 将调用此 url,该 url 现在包含原始 ReturnUrl。您可以FormsAuthentication.GetRedirectUrl再次使用来检索返回 url。

请注意,使用此 API 而不是仅从 Request.Querystring 集合中获取值很重要,因为它会验证返回 url,确保它来自同一个域。如果 url 被认为是不安全的,asp.net 将回退到 web.config 中 forms 元素上指定的 defaultUrl 属性。

于 2010-08-21T19:06:36.167 回答