c# - 保持简单的成员资格 OAuth session 事件

标签 c# asp.net asp.net-mvc asp.net-mvc-4 simplemembership

我们在 ASP.NET MVC 4 中使用 Simple Membership Provider,并使用 Facebook Client 提供 Facebook 登录支持(类似于 http://www.asp.net/mvc/overview/getting-started/using-oauth-providers-with-mvc )。

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

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

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

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

最佳答案

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

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

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

但在您的情况下,我认为问题出在来自 facebook 的短期实时访问 token (默认大约 2 小时)。如果问题出在访问 token 上 here is link如何延长访问 token 的生命周期。

关于c# - 保持简单的成员资格 OAuth session 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15401603/

相关文章:

android - 将 ASP.NET 网站连接到 Azure 移动服务数据库

c# - 无法在 LINQPad 中使用异步/等待 - "Invalid token {after async} in .."

c# - 为什么要在 NHibernate session 之上使用工作单元模式?

c# - 动态生成的 ASP.NET 页面没有基本的 html 结构

c# - 在 asp.net web 服务中调用自定义 WSDL (ASMX)

asp.net - 我可以在一个共享点网站上使用多个母版页吗?

jquery - 根据下拉列表的变化显示文本框中的值

c# - 如果记录在表中则插入或更新

c# - 访问静态数据的设计模式

asp.net - MVC4 在单个 View 上显示多个部分 View 的问题