Как получить "возврат URL" в Janrain RPX - PullRequest
3 голосов
/ 12 августа 2010

Как получить предыдущий URL, используя логин Janrain RPX?

Я использую Asp.Net MVC для запроса.

1 Ответ

5 голосов
/ 21 августа 2010

Когда анонимный пользователь просматривает защищенное представление, asp.net автоматически перенаправляет их на страницу входа и помещает ReturnUrl в строку запроса.Вы можете сохранить ReturnUrl, добавив его к token_url, используемому при входе в RPX.

Вот помощник, который я создал, чтобы сгенерировать правильный href для iframe RPX на моей странице входа в систему:

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 вернется к свойству defaultUrl, указанному в элементе forms в вашем web.config.

...