【问题标题】:Keeping Simple Membership OAuth Session Alive保持简单的成员资格 OAuth 会话有效
【发布时间】:2013-03-02 08:23:03
【问题描述】:

我们正在使用带有 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 登录功能?

【问题讨论】:

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


    【解决方案1】:

    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 小时左右)。如果问题是访问令牌here is link 如何延长访问令牌的生命周期。

    【讨论】:

    • 在登录过程发生后,我实际上并没有访问 Facebook 数据。看起来简单成员资格提供程序在其开箱即用的实现中忽略了“createPersistentCookie”参数。
    猜你喜欢
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    相关资源
    最近更新 更多