asp.net-mvc - 如何在 Janrain RPX 中获取 "return url"

标签 asp.net-mvc model-view-controller janrain

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

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

最佳答案

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

这是我创建的帮助程序,用于在登录页面上为 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,其中现在包含原始 ReturnUrl。您可以再次使用 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/

相关文章:

android - Janrain 移动集成使用 RESTFul API?适用于 Windows、iOS 和 Android

c# - ReadAsMultipartAsync 和 MultiPartFormDataStreamProvider 出错

model-view-controller - 授权应该是模型或 Controller 的一部分吗?

authentication - 使用 Janrain 和 OAuth 的区别?

jquery - Spring MVC 3.0 带注释的 Controller 无法与 JQuery $.post() 一起使用

model-view-controller - 就 MVC 模式而言,Struts 2 中使用的 Action 是什么?

echo - JanRain是否可以支持通过多个网站登录,并同时支持Facebook Connect?

asp.net-mvc - 在 MVC 布局菜单上显示和更新购物车计数

asp.net - aspnet-mvc5中身份验证和授权过滤器的区别

asp.net-mvc - Visual Studio 2012 - 将 "Views"和 "Content"复制到项目输出路径