2012-05-31 178 views
0

我正在ASP.NET MVC 3中構建Web門戶,它使用遠程Web服務作爲與數據庫進行通信的唯一方式。 Web服務要求始終在請求標頭中傳遞用戶名/密碼,否則會拒絕該呼叫。使用Web服務進行身份驗證的自定義成員身份

我重寫ASP.NET成員資格,以便我的ValidateUser方法將用戶名/密碼發送到Web服務登錄方法,如果認證成功,則返回true/false。它與MVC 3空互聯網模板提供的AcountController相當不錯。由於我必須在每個Web服務調用上傳遞用戶名/密碼,因此我將它們保存在Session中。

我的問題是:

如果我關閉瀏覽器,然後重新打開它...我保持登錄網站,但我的Session變量過期,所以沒有我的請求,Web服務被接受,即使我仍然使用憑據登錄。

我在尋找很好的建議,如何同步用戶登錄狀態與會話狀態。要麼保持它們的持久性,直到註銷被使用,或者讓它們在瀏覽器被關閉時處置。

感謝您的所有建議:)

回答

1

當使用的AccountController用戶的跡象,嘗試設置身份驗證cookie的是這樣的:

FormsAuthentication.SetAuthCookie(model.UserName, false); 

這應該告訴ASP.NET來刪除cookie時,關閉瀏覽器窗口。然後,當用戶打開一個新的瀏覽器時,session和auth cookie都應該被銷燬。

0

會話是客戶端的cookie。表單身份驗證(使用您的會員提供商)也使用Cookie。

它們是不同的。

您的身份驗證票證或cookie是否持久? This MS KB將比我在這裏更詳細地解釋事情和情景...

Hth。

相關問題