Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 表单身份验证会话在注销后有效_Asp.net_Authentication_Forms Authentication - Fatal编程技术网

Asp.net 表单身份验证会话在注销后有效

Asp.net 表单身份验证会话在注销后有效,asp.net,authentication,forms-authentication,Asp.net,Authentication,Forms Authentication,有没有一种好方法可以使服务器上的表单身份验证会话无效 我知道cookie有一个嵌入式过期,但我想在服务器上做一个额外的检查,以验证用户没有手动注销。当用户手动注销时,我会调用该命令,使cookie过期。但是,如果我使用开发人员工具将cookie设置回其原始值,我仍然会登录 我能想到的一个选择是将“登录id”嵌入到票证的部分。我的意思是,每个登录都记录在一个数据库中,并且有一个与之关联的id。当用户手动注销时,我可以更新数据库记录以显示他们已经这样做。但是,这需要我在每次对用户进行身份验证时查询数

有没有一种好方法可以使服务器上的表单身份验证会话无效

我知道cookie有一个嵌入式过期,但我想在服务器上做一个额外的检查,以验证用户没有手动注销。当用户手动注销时,我会调用该命令,使cookie过期。但是,如果我使用开发人员工具将cookie设置回其原始值,我仍然会登录

我能想到的一个选择是将“登录id”嵌入到票证的部分。我的意思是,每个登录都记录在一个数据库中,并且有一个与之关联的id。当用户手动注销时,我可以更新数据库记录以显示他们已经这样做。但是,这需要我在每次对用户进行身份验证时查询数据库(这并不理想)。我可以维护一个缓存,但这似乎需要很多工作,我希望有一个更简单的方法:)


谢谢

MSDN。要点:在服务器上使用持久性存储来记录用户何时从网站注销。

存储“登录id”的替代方法是更新用户记录中的“登录状态”字段

当用户登录时,将其设置为“loggedin”。 您可以将其设置为“loggedout”,同时
用于身份验证。注销

然后,在处理管道的早期某处检索用户记录(以后可能仍然需要它!)并检查标志。如果标志为“loggedout”,则表示出现了问题,您将以401(或另一个指示身份验证问题的代码)结束请求


当然,还可以将短cookie过期时间与滑动过期和SSL结合使用。这并不能防止cookie被您自己劫持,但可以降低被其他人重复使用的风险。

这并不完全是我所希望的,但我认为您是正确的。谢谢:)谢谢你的提示。这里的缺点是,如果用户使用一个以上的浏览器登录(理论上可能),他们可能会遇到一些wierd行为。