如何在Janrain RPX中获得"返回网址"

Fer*_* JS 3 model-view-controller asp.net-mvc janrain

如何使用Janrain RPX登录获取以前的URL?

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

Joe*_*ore 5

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

这是我为SignIn页面上的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;
}
Run Code Online (Sandbox Code Playgroud)

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

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