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

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

最佳答案

当匿名用户浏览到安全 View 时,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 将调用这个现在包含原始 ReturnUrl 的 url。您可以再次使用 FormsAuthentication.GetRedirectUrl 来检索返回 url。

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

关于asp.net-mvc - 如何在 Janrain RPX 中获取 "return url",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3470707/

10-15 06:17