2011-12-17 70 views
1

這裏是我的配置部分:混淆有關窗體身份驗證在ASP.NET MVC

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/Login" timeout="43200" cookieless="UseCookies" slidingExpiration="true" /> 
</authentication> 

現在在控制器中,我有:

FormsService.SignIn(userName, true); 
var temp = User.Identity.IsAuthenticated; 

的溫度值有時會被設置爲false,有時真正。當用戶是我自己時(在系統中有效)。無論我的aspx頁面中有這個值,我都有:

<% if (Context.User.Identity.IsAuthenticated) 
      { %> 

這總是解決爲真。那麼我在我的控制器中做錯了什麼?我如何檢查用戶是否在控制器中進行了身份驗證?

非常感謝!

回答

1

驗證並設置身份驗證Cookie後,您必須重定向。在隨後的請求中,用戶將被真正認證。

public ActionResult LogOn() 
{ 
    FormsService.SignIn(userName, true); 
    return RedirectToAction("authenticated"); 
} 
+0

謝謝!它做到了。我從來沒有猜到。 – Barka

+0

@ user277498,原因如下:當您成功驗證用戶身份時,將身份驗證Cookie添加到「Response」對象。在隨後的請求中,這個cookie是由客戶端發送的,因此它在'Request'對象中。表單身份驗證模塊在Request對象中查找cookie,以瞭解用戶是否已通過身份驗證。 –