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 使用无Cookie会话时如何正确处理表单身份验证票证_Asp.net_Session_Authentication_Cookieless - Fatal编程技术网

Asp.net 使用无Cookie会话时如何正确处理表单身份验证票证

Asp.net 使用无Cookie会话时如何正确处理表单身份验证票证,asp.net,session,authentication,cookieless,Asp.net,Session,Authentication,Cookieless,我很确定我没有什么特别的问题,但我在谷歌和这个网站上搜索过,我还没有找到一个可靠的答案。所以我想解释一下,看看我是否能在这个问题上得到任何帮助: 我和我的同事决定我们需要无cookie会话,因为我们的用户需要多个会话才能以更高效的方式完成他们的工作 范例 Bob用户可能已经在窗口a中启动了一个长时间运行的进程,为了继续工作,Bob将打开窗口B,从而生成一个新会话。这是必要的,以避免干扰窗口A中正在进行的操作。每次Bob打开新窗口时,他都必须再次登录 问题 我不确定这是否是一个真正的问题,因此我提

我很确定我没有什么特别的问题,但我在谷歌和这个网站上搜索过,我还没有找到一个可靠的答案。所以我想解释一下,看看我是否能在这个问题上得到任何帮助:

我和我的同事决定我们需要无cookie会话,因为我们的用户需要多个会话才能以更高效的方式完成他们的工作

范例 Bob用户可能已经在窗口a中启动了一个长时间运行的进程,为了继续工作,Bob将打开窗口B,从而生成一个新会话。这是必要的,以避免干扰窗口A中正在进行的操作。每次Bob打开新窗口时,他都必须再次登录

问题 我不确定这是否是一个真正的问题,因此我提出这个问题的理由。我认为我发现的问题是,每次Bob登录时,当前表单的身份验证票证和Cookie都被过度写入。现在我不明白这是怎么回事,也不明白为什么在Bob第二次登录后,上一个会话/窗口组合仍然有效。由于票证被重写,这不意味着第一个会话/窗口组合应该结束,因为票证不再有效吗?这是关于:

Request.IsAuthenticated //Making sure the supplied ticket is valid
问题 既然表单身份验证票据和Cookie被过度写入,这意味着什么

我应该担心票和饼干被写得太多了吗? 在登录过程中,我是否应该拦截罚单(如果有的话)并检查其过期时间?如果没有过期,我应该试着换新票还是换一张新票

FormsAuthentication.RenewTicketIfOld(ticket) //Just an example
如果我使用的是无cookie会话,我是否也应该使用无cookie表单身份验证?这样做的目的是使每个会话/窗口彼此100%独立。不会再出现过度书写。这有退步吗?我想不出有什么

PS:我知道cookie只是一个容器,里面存储着什么,就像一个键值对

附加信息

表格验证票证: IsPersistent设置为true 门票版本2

表格Cookie: Key=formScookeName from web.config标记 Value=散列票据

Web.Config:


此解决方案是否位于有多个web服务器的web服务器场中?感谢添加该标记。目前没有webfarm,但可能有。但是我知道这在很长一段时间内都不会实现。所以没有,没有网络农场。我只是想确保我做得对,因为我知道如果我做得不对,它可能会在我面前爆炸。
<sessionState 
    cookieless="true" 
    mode="SQLServer" 
    sqlConnectionString="..." 
    timeout="300" 
regenerateExpiredSessionId="true" />

<forms name="FormsCookieName" 
    path="../" 
    loginUrl="Login.aspx" 
    protection="All" 
    timeout="300"
    slidingExpiration="true" >
</forms>