在web.config中,我将sessionState中的超时设置为20分钟.根据MSDN,此超时指定会话在被放弃之前可以空闲的分钟数.在IIS 7中,DefaultWebSite->会话状态 - > Cookie设置 - >超时自动填充web.config中设置的超时值,在我的情况下是20分钟.此外,应用程序池 - > DefaultAppPool->高级设置 - > idleTimeout,我将其设置为10分钟.
然后我做了两个测试:第一次测试:我在下午3:45登录我的网络应用程序,闲置10分钟.下午3:55,我试图使用我的应用程序,我被踢了出去.我认为idleTimeout正在发挥作用.
第二次测试:我在下午4:00登录我的网络应用程序,在下午4:05,下午4:10,下午4:15和下午4:20使用应用程序.我预计会在下午4:20被踢出局.但我不是.我认为IIS 7中的会话状态超时(20分钟)是Web Agent挑战用户重新进行身份验证之前用户会话可以处于活动状态的最长时间.显然,从这个测试,它不是.任何人都可以向我解释一下吗?另外,我如何设置上述情况的超时?
后来我问如何正确注销用户,现在我发现只使用cookie来保持用户登录根本不安全.
将密码保存在cookie中并不是一种安全的方法,所以我的问题是,在我的网站上制作(登录/保持用户登录)的正确方法是什么?
目前我存储的用户ID与url显示X用户配置文件的内容相同,以及在MD5中加密的电子邮件和密码.
Setcookie是我成功登录时使用的唯一功能.我只使用会话来存储随机数,以避免重复提交表单.隐藏的领域.
•您能告诉我这是如何正确和安全的方法吗?
•你的方法是什么?
仅限PHP.两个月的PHP,都是从你的答案中学到的.谢谢
我有一个ASP.Net MVC 5应用程序,使用Identity 2进行身份验证(使用标准cookie身份验证中间件,配置为ExpireTimeSpan = 30分钟,SlidingExpiration = true).
我已经将身份验证配置为在30分钟后过期,我需要从客户端检查用户是否仍然登录.我可以为此做一个简单的AJAX调用,但它会刷新我的会话并重置超时,这是正是我想要避免的.只有当客户端在我的应用程序上只打开一个选项卡时,在Javascript中使用30分钟超时才有效,这是我无法保证的.
我正在考虑向可以检查身份验证是否仍然有效但不重置超时的操作添加自定义属性.有没有办法做到这一点?
或者,这可能也可以使用OWIN中间件完成,但同样,我不知道如何在不重置超时的情况下检查身份验证.