- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
前言:我读过这个(ASP.NET MVC membership - user being logged out frequently - don't know why)和这个(ASP.NET Identity 2 Remember Me - User Is Being Logged Out)和这个(ASP.NET 5 Identity 3 users get signed out after some time)和这个(User gets logged out with 'Remember me')。
我在这里有点噩梦。我在 VS 15 中设置了一个样板 MVC5 应用程序。所有内容都已更新到最新版本(特别是 identity.core 和 identity.owin,因为我读到样板 MS 内容存在问题)。
我们注意到,用户在我们的一个应用程序上闲置大约 10-15 分钟后就会注销。我们的用户还报告说“记住我”功能根本不起作用。
我不知道我做错了什么...
启动.Auth.cs:
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
SlidingExpiration = true,
ExpireTimeSpan = System.TimeSpan.FromDays(30.0),
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
Provider = new CookieAuthenticationProvider
{
// Enables the application to validate the security stamp when the user logs in.
// This is a security feature which is used when you change a password or add an external login to your account.
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromMinutes(30),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
}
});
我的配置文件:
<system.web>
<httpCookies httpOnlyCookies="true" requireSSL="true" lockItem="true" />
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" slidingExpiration="true" timeout="60" requireSSL="true" />
</authentication>
<compilation targetFramework="4.5.2" />
<httpRuntime targetFramework="4.5.2" />
<machineKey validationKey="AutoGenerate,IsolateApps" decryptionKey="AutoGenerate,IsolateApps" validation="SHA1" decryption="Auto" />
<httpModules>
<add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" />
</httpModules>
</system.web>
AccountController 中的身份验证:
[ValidateAntiForgeryToken]
[HttpPost]
[AllowAnonymous]
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (!ModelState.IsValid)
{
return View(model);
}
// This doesn't count login failures towards account lockout
// To enable password failures to trigger account lockout, change to shouldLockout: true
var result = await SignInManager.PasswordSignInAsync(model.Username, model.Password, isPersistent: true, shouldLockout: false);
switch (result)
{
case SignInStatus.Success:
return RedirectToLocal(returnUrl);
case SignInStatus.LockedOut:
return View("Lockout");
case SignInStatus.RequiresVerification:
return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
case SignInStatus.Failure:
default:
ModelState.AddModelError("", "Invalid login attempt.");
return View(model);
}
}
我主要是想给用户一个 30 的滑动 cookie。也就是说,只要他们在 30 天内访问该网站并且没有清除他们的 cookie,他们就不必重新进行身份验证。
如您所见,isPersistent 在登录时设置为 true,因此用户应该始终有效地被视为 rememberMe = true;
我在这里是否遗漏了一些明显的东西,或者我是否完全不了解 isPersistent 和 perpetual login 的工作原理?
如果我做了一些愚蠢的事情,请随意起哄。提前致谢。
注意:我已经修改了配置文件中表单例份验证条目的超时值,与我从测试中看到的相比没有任何变化。
编辑:我和我的托管公司谈过,他们在 15 分钟不活动后回收应用程序池。他们现在已经扩展了。然而,这并不能解决问题。
我认为拥有机器 key 可以确保 cookie 能够存活并回收应用程序?我现在已经放了一个明确的机器 key ,看看它是怎么回事。对于问题的原因以及如何解决它仍然有点难过...
最佳答案
所以出于某种原因(仍然不确定是什么)我的摆弄似乎奏效了。
我最终不得不生成一个明确的机器 key 而不是使用
validationKey="AutoGenerate,IsolateApps"
decryptionKey="AutoGenerate,IsolateApps"
我还要求我的托管公司延长 IIS 应用程序池空闲回收时间(不确定这是正确的名称,但托管支持人员就是这样调用它的)。
这似乎已经解决了问题,而且经过一整夜的测试,我没有登出。还是有点难过。根据托管公司的说法,应用程序池仍在回收,尽管间隔时间更长。
我现在认为显式机器 key 可能与此有关?但我之前使用过“AutoGenerate,IsolateApps”,它运行良好。
我希望这对其他人有帮助。真的没有时间进行全面测试并删除机器 key 以查看它是否仍然有效。一旦我可以设置一些确定的测试,我会报告。
关于c# - MVC 5 经过身份验证的用户正在注销,没有 "remember me"(ExpireTimeSpan/MachineKey/Session Timeout),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39836488/
如 https://developer.android.com/jetpack/compose/side-effects , 我们有 derivedStateOf这有助于防止不必要的重组。 有了这个,
我正在使用 AWS Cognito Identity JS SDK ( https://github.com/aws/amazon-cognito-identity-js ),并尝试设置一些按钮来测试
按照教程, 我已经使用 Auth 构建了身份验证系统。 Pyramid 的 API。 我想了解如何在登录中引入两件事(勾选框): 记住我的名字 记住我的密码 我怎样才能做到这一点?我需要做什么? 谢谢
我在 Auth/ORM 和 auto_login 方面遇到问题。我将生命周期设置为两周,但无论浏览器是否关闭,我都会在大约一个小时后注销。事实上,它是基于时间的,因为 session 确实存在,即使在
我需要在使用 django-registration 应用程序的登录表单中实现一个“记住我”按钮。任何ane可以帮助我向我展示这样做的方法吗? 谢谢 最佳答案 一种方法是更改 session 到期
我有一个函数,它从数据库检索数据并将其传递给回调。出于优化目的,我希望此数据最多每 60 秒更新一次。我的闭包函数如下所示: function delayedUpdate(fn, delay, cal
我正在编写一个配备“记住我”的登录表单,到目前为止,我读过的教程(部分是为了确保我做得正确)都说将加密的密码存储在一个 cookie 和用户名。然后,每次 PHP 检查当前用户是否未登录时,检查他们的
我正在尝试在基于 ServiceStack 的项目中实现记住我 功能。我不想使用基本身份验证,因为它需要在浏览器 cookie 中以明文形式存储密码,因此我需要想出一种易于维护和自定义到我现有数据库的
我无法“记住”在 emacs 的组织模式下工作。 我在雪豹上。 我加了 (global-set-key (kbd "C-M-r") 'org-remember)到我的 .emacs 文件但是当我尝试使
问题是关于 JS 闭包的。我有红色的定义和例子,我相信我相当了解这个机制。所以,问题是关于我不明白的具体事情。请考虑以下两个代码。代码一: function a(){ let x = 5; retur
我正在实现“记住我”功能,我希望用户不必再次输入登录名/密码。 它似乎在本地工作,但在共享主机中,它持续大约 15 分钟然后注销。这是代码: 控制者: FormsAuthentication.SetA
在我的 Android 应用程序中,我使用一组随机生成的文件名来存储一些数据。为了确保在应用程序重新启动时生成相同的文件名集 - 并且每个应用程序安装都不同 - 我通过从一长串随机字母数字字符中选择名
当我尝试在特定数据库中重新创建特定表时,MySQL 让我很伤心;我认为问题出在 MySQL 的某个地方有一些表的外键记录,并在我尝试重新创建表时不断尝试检查约束。 有问题的数据库用于测试环境,并通过转
我正在尝试弄清楚如何在我正在开发的应用程序中实现“记住我”。目前我的实现看起来像这样。 用户登录并请求被记住 服务器使用电子邮件/密码验证用户 如果验证成功,我会使用用户的电子邮件和存储在服务器上的
我正在尝试使用 PHP 和 MySQL 创建一个登录系统。我使用 cookie 是为了让用户长时间保持登录状态。 cookie 有一个随机生成的字符串,它也在数据库中。将它们相互比较并采取适当的行动。
我在 Google CodeLabs:这是代码: @Composable fun WaterCounter( modifier: Modifier = Modifier, ) { va
如何在Grails中实现“记住我”功能,以便用户可以检查它,而他又不必在2周内再次登录? 我正在使用jSecurity插件,并希望在浏览器 session 之外更改cookie的生存期。 最佳答案 S
我最近一直在思考这个问题,我想从这个很棒的社区得到一些反馈。假设用户希望在登录时被记住是否安全?如果他们使用的是公共(public)计算机,是否可以假设他们足够聪明,可以在离开前注销? 最佳答案 我真
我试图使用带有用户名和 token 的cookie向网站添加“记住我”功能,该cookie也以加密方式存储在数据库中。我的问题是该 token 应保留多长时间? One website I read说
当要记住我的cookie时,有两种不同的方法: 哈希 “记住我” cookie存储一个可以标识用户的字符串(即用户ID)和一个可以证明所标识的用户是假装的用户的字符串-通常是基于用户密码的哈希。 to
我是一名优秀的程序员,十分优秀!