2013-03-14 66 views
5

我們在ASP.NET MVC 4中使用簡單成員資格提供程序,並且我們使用Facebook客戶端提供Facebook登錄支持(類似於http://www.asp.net/mvc/overview/getting-started/using-oauth-providers-with-mvc)。保持簡單會員OAuth會話活躍

我們已經得到了這個工作,但會話總是在一天內超時,我們希望登錄是持久的,所以用戶只能登錄並使用一次服務。

在出的現成ExternalLoginCallback功能,我試圖給createPersistentCookie參數設置爲true,但它不會讓登錄活着。這是我正在撥打的電話:

OAuthWebSecurity.Login(result.Provider, result.ProviderUserId, createPersistentCookie: true) 

我需要手動設置Forms Authentication cookie以完成持久登錄嗎?或者還有另外一種方法可以做到這一點,同時仍然利用開箱即用的Facebook登錄功能?

回答

3

ASPXAUTH cookie用於確定用戶是否通過身份驗證。您可以使用螢火蟲或任何其他網頁調試工具來追蹤到期時間。在您的項目中,Cookie設置在ExternalLoginCallback中。以下是屏幕設置Cookie的過期超時示例。

所有我必須做的工作就是使用SSL,並在web.config中更改cookie超時。這裏是超時設置爲1分鐘的示例。不要忘記在true上標記requireSSL。

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/Login" timeout="1" requireSSL="true"/> 
</authentication> 

但在你的情況下,我認爲問題是從facebook的短現場訪問令牌(默認約2小時)。如果問題出在訪問令牌here is link如何延長訪問令牌的生存期。

+0

我實際上在登錄過程發生後並未訪問Facebook數據。它看起來像簡單成員提供程序在其開箱即用的實現中忽略「createPersistentCookie」參數。 – BlueSam 2013-04-11 18:11:26

+0

我修改了帖子。 – 2013-04-11 19:46:04