5

我们正在使用带有 ASP.NET MVC 4 的 Simple Membership Provider,并且我们正在使用 Facebook 客户端来提供 Facebook 登录支持(类似于http://www.asp.net/mvc/overview/getting-started/using- oauth-providers-with-mvc)。

我们已经完成了这项工作,但是会话总是在一天之内超时,我们希望登录是持久的,这样用户就可以登录并使用该服务一次。

在开箱即用的ExternalLoginCallback函数中,我尝试将createPersistentCookie参数设置为 true,但它不会使登录保持活动状态。这是我正在打的电话:

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

我是否必须手动设置表单身份验证 cookie 才能完成持久登录?或者是否有另一种方式来做到这一点,同时仍然利用开箱即用的 Facebook 登录功能?

4

1 回答 1

3

ASPXAUTH cookie用于确定用户是否经过身份验证。您可以使用 firebug 或任何其他 Web 调试工具跟踪过期时间。在您的项目中,cookie 在 ExternalLoginCallback 中设置。这是设置 cookie 过期超时的示例屏幕。

我要做的就是使用 SSL,并在 web.config 中更改 cookie 超时。这是超时设置为 1 分钟的示例。不要忘记将 requireSSL 标记为 true。

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

但在你的情况下,我认为问题在于来自 facebook 的短期访问令牌(默认为 2 小时左右)。如果问题出在访问令牌这里是链接如何延长访问令牌的生命周期。

于 2013-04-06T13:13:06.870 回答