Когда анонимный пользователь просматривает защищенное представление, 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.