【问题标题】:DefaultAuthenticationTypes.ApplicationCookie persist after server reboot服务器重启后 DefaultAuthenticationTypes.ApplicationCookie 持续存在
【发布时间】:2014-03-25 00:35:15
【问题描述】:

我正在使用 mvc 5 与 facebook 进行外部登录,但每次服务器重新启动后,用户都会从系统中注销。这违背了 oAuth 的目的?我找不到任何属性让它们在重新启动后仍然存在

这就是 startup.auth 的样子..

app.UseCookieAuthentication(new CookieAuthenticationOptions
{
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
    LoginPath = new PathString("/Account/External"),
    ExpireTimeSpan = new TimeSpan(30, 0, 0, 0),
    SlidingExpiration = true
});

app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);

【问题讨论】:

    标签: c# .net asp.net-mvc-5 asp.net-identity owin


    【解决方案1】:

    如果web.config 文件使用默认的自动生成设置,则服务器的加密密钥将在每次网络服务器重新启动时更改。要解决此问题,machineKey 元素需要具有固定的键值。

    在线machineKey生成器:http://aspnetresources.com/tools/machineKey

    【讨论】:

    • 它会带来任何安全问题吗?
    • 否(但machineKey 属性应始终使用您的 IIS 版本支持的最安全的算法值)。这是网络场中使用的机制,可确保所有服务器使用相同的密钥集。
    • 它现在可以工作了,感谢 devstuff,所以如果密钥被泄露,我们必须手动更改它吗?并面临“所有用户退出”问题?
    • 没错。如果您是较大的开发团队的一员,您可能希望拥有单独的调试和生产设置,生产仅对进行部署的人可用。这将最大限度地减少任何曝光窗口。
    【解决方案2】:

    是的,所以在默认模板中没有相当于记住我密码登录的选项,基本上你可以通过在 ExternalLoginCallback 中将 isPersistent 更改为 true 来做到这一点

                await SignInAsync(user, isPersistent: false);
    

    【讨论】:

    • 我已将其设置为 true,但它仍然没有“记住我”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-03
    • 2012-12-26
    • 1970-01-01
    • 2021-06-04
    • 2013-11-04
    • 1970-01-01
    相关资源
    最近更新 更多