2012-05-29 147 views
1

用戶使用他們的Google個人資料登錄後,我試圖將他們重定向回主頁,但是它保持重定向到default.aspx。DotNetOpenAuth重定向到主頁

下面的代碼中返回上面的行是我用來嘗試重定向。

[System.Web.Mvc.AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Logon(string loginIdentifier) 
{ 
    if (!Identifier.IsValid(loginIdentifier)) 
    { 
     ModelState.AddModelError("loginIdentifier", "The specified login identifier is invalid"); 
     return View(); 
    } 
    else 
    { 
     var openId = new OpenIdRelyingParty(); 
     IAuthenticationRequest request = openId.CreateRequest(Identifier.Parse(loginIdentifier)); 

     // Require some additional data 
     request.AddExtension(new ClaimsRequest 
     { 
      BirthDate = DemandLevel.NoRequest, 
      Email = DemandLevel.Require, 
      FullName = DemandLevel.Require 
     }); 

     request.AddCallbackArguments("http://localhost:5977/Home/About", "http://localhost:5977/Home/About"); 
     return request.RedirectingResponse.AsActionResult(); 
    } 
} 

任何幫助將不勝感激,謝謝!

+0

我能弄明白這一點,別擔心! –

+1

對於後人來說,如果你發佈你自己的答案,這個問題的其他人可以把它弄明白,那就太好了。 –

回答

4

添加回調參數並不能控制用戶在登錄完成時的位置。相反,web.config中設置默認的重定向行爲:

<authentication mode="Forms"> 
     <forms defaultUrl="/myhomepage"/> 
    </authentication> 

這最終會在你的控制器,你叫RedirectFromLoginPage改用SetAuthCookie,然後手動重定向覆蓋。但是,無論如何,您通常應該在web.config文件中列出正確的主頁URL,在這種情況下會發生正確的事情。

+0

這也可以!最終,我最終從switch語句重定向到了主頁,這是我在非重載登錄函數中使用的。重定向( 「家」); –

+0

我在http://www.dotnetopenauth.net/developers/help/configuration-options/上看不到這個web.config元素 - 我在哪裏放置配置元素? –

+1

因爲它是[ASP.NET窗體身份驗證設置](http://msdn.microsoft.com/zh-cn/library/532aee0e(v = vs.100).aspx),所以您沒有在dotnetopenauth文檔中看到它的記錄。 。 –