保持简单会员OAuth会话活着

Blu*_*Sam 5 c# asp.net asp.net-mvc asp.net-mvc-4 simplemembership

我们正在使用ASP.NET MVC 4的简单成员资格提供程序,我们正在使用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)
Run Code Online (Sandbox Code Playgroud)

我是否必须手动设置Forms Authentication cookie才能完成持久登录?或者还有另一种方法可以做到这一点,同时仍然利用开箱即用的Facebook登录功能?

jan*_*awa 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>
Run Code Online (Sandbox Code Playgroud)

但就你而言,我认为问题出在 facebook 的短期实时访问令牌(默认大约 2 小时)。如果问题出在访问令牌上,这里是如何延长访问令牌的生命周期的链接。