3

我有一個MVC3應用程序,我想實現索賠支持。我的目標如下:MVC3 + WIF - FederationResult缺少「wctx」

  1. 提供登入鏈接,點擊它時顯示與用戶名/密碼和Facebook /的WindowsLive /谷歌等的彈出窗口鏈接

  2. 自動重定向到我的登入網頁受保護的控制器被訪問,例如/ Order/Delete

我已經在AppFabricLabs.com中設置了應用程序和提供程序,並在我的項目中包含了STS。我還創建了一個IAuthorizationFilter的實現,這樣我就可以將我的控制器標記爲[WifAuth]併成功獲取調用的OnAuthorization方法。我實現了當遊客沒有經過驗證這樣的用例:

private static void AuthenticateUser(AuthorizationContext context) 
    { 
     var fam = FederatedAuthentication.WSFederationAuthenticationModule; 
     var signIn = new SignInRequestMessage(new Uri(fam.Issuer), fam.Realm); 
     context.Result = new RedirectResult(signIn.WriteQueryString()); 
    } 

,並順利拿到我的身份提供商的選擇AppFabricLabs頁(還沒有想出如何自定義頁面)。當我登錄我RETURNURL被調用,所以我在一個控制器方法着陸/主頁/ FederationResult,但是貼到我的表格只包含WAwresult領域,但我需要wctx知道在哪裏可以發送用戶。 ..我一直無法弄清楚爲什麼。

wresult是一個XML文檔,其中包含(其中包含其他事物)登錄用戶的名稱和電子郵件地址,但可惜不包含用戶前往的url。

我沒有配置一些東西,或者我剛剛脫離基地?想到任何人?

  • Ë

回答

3

只需指定SignInRequestMessage一個語境:

signIn.Context = HttpContext.Current.Request.RawUrl; 

wctx參數包含在每個請求/響應,也是形式的一部分,最後發佈到你的網站。

+0

真棒。 'signIn.Context = context.HttpContext.Request.RawUrl'在我的情況。 – ekkis