2012-07-15 54 views
0

這是我的家控制器RedirectToaction和方法調用

public ActionResult Index() 
{ 
    if (User.Identity.IsAuthenticated) 
    { 
     return NewPosts(); 
    } 
    else 
    { 
     ViewBag.Message = "Welcome!"; 
     return View(); 
    } 
} 

的默認索引功能,這是在同一個家庭控制器文件

public ActionResult NewPosts() 
{ 
    return View(); 
} 

我登錄到我的帳戶和newposts功能我關閉瀏覽器。然後我重新打開它訪問相同的索引頁面,我看到我的身份(歡迎myusername),但newposts函數未被調用,因此它不會按預期顯示newposts視圖。

這是爲什麼?我怎樣才能解決這個問題 ?

謝謝。

回答

0

我認爲讓這項工作更好的方法是通過web.config爲網站設置一個默認頁面作爲'NewPosts'。然後在您的web.config中,您可以將失敗的登錄頁面設置爲'索引'。這會使用戶登錄後發送到'NewPosts'頁面。如果他們關閉了瀏覽器(並且他們的認證cookie沒有過期),那麼他們也會被髮送到'NewPosts'頁面。如果他們沒有登錄,那麼他們將被踢到'索引'頁面。您的Index操作方法中的if語句將不再需要,因爲Web配置表單身份驗證以更健壯的方式爲您提供幫助。下面是web配置可能是什麼樣子的例子:

<authentication mode="Forms"> 
     <forms loginUrl="~/Home/Index" timeout="2880" defaultUrl="~/Home/NewPosts" > 
     </forms> 
</authentication> 

的關於表單驗證web.config中的信息,請參閱here

0

問題不在於控制器,而在於緩存瀏覽器。

如果您在第一頁上按Ctrl + F5,它應該將您識別爲未經授權的。

我知道這不是一個真正的解決方案,迫使網站訪問者按Ctrl + F5來刷新他們的瀏覽器。互聯網上有很多文章來解決這種緩存行爲,爲他們提供幫助。

1-更改return NewPosts();到:

兩個有關代碼要點

RedirectToAction("NewPost"); 

2- Decoreacte NewPosts方法與[授權]屬性:

[Authorize] 
public ActionResult NewPosts() 
{ 
    return View(); 
}