2010-08-12 2 views

답변

5

익명 사용자가 보안 된보기를 탐색 할 때 asp.net이 자동으로 SignIn 페이지로 리디렉션하고 ReturnUrl을 쿼리 문자열에 배치합니다. ReturnUrl을 RPX 로그인에 사용 된 token_url에 추가하여이를 유지할 수 있습니다. 사용자가 인증

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을 호출합니다 : 여기

내가 내 로그인 페이지에 RPX은 iframe에 대한 올바른 HREF를 생성하기 위해 만든 도우미입니다. FormsAuthentication.GetRedirectUrl을 다시 사용하여 반환 URL을 검색 할 수 있습니다.

반환 URL의 유효성을 검사하고 동일한 도메인에서 해당 URL을 확인하므로 Request.Querystring 컬렉션에서 값을 가져 오는 것보다이 API를 사용하는 것이 중요하다는 점에 유의하십시오. url이 안전하지 않은 것으로 간주되면 asp.net은 web.config의 forms 요소에 지정된 defaultUrl 속성으로 돌아갑니다.

+0

Perfect. "http : // /Account/RpxResponse? ReturnUrl ="이 솔루션입니다. –

+0

언제 URL을 바꿉니 까? –

관련 문제