gpt4 book ai didi

.net - ASP.Net 表单例份验证 10 分钟后注销用户

转载 作者:行者123 更新时间:2023-12-02 06:16:09 25 4
gpt4 key购买 nike

我遇到了一个非常严重的问题,无论我尝试什么,用户都会在 10 分钟后注销。

我正在使用在 Server 2003 R2 Standard Edition 上的 IIS 6.0 上运行的 ASP.Net 2.0,该版本作为虚拟服务器运行,并具有所有适用的更新和 .Net 3.5 SP1。

客户端是Internet Explorer 7.0

以下是 web.config 设置:

<!-- Authentication Mode -->
<authentication mode="Forms">
<forms name=".RecipeViewer" timeout="240" />
</authentication>

下面是用于设置授权cookie的代码:

Private Sub SetCookie(userName)
' Use security system to set the UserID within a client-side Cookie
Dim ticket As New FormsAuthenticationTicket(1,userName, DateTime.Now, DateTime.Now.Add(Me.GetFormsAuthSettings.Forms.Timeout), True, String.Empty, FormsAuthentication.FormsCookiePath)
Dim hash As String = FormsAuthentication.Encrypt(ticket)
Dim cookie As New HttpCookie(FormsAuthentication.FormsCookieName, hash)

cookie.HttpOnly = True

If (ticket.IsPersistent) Then
cookie.Expires = ticket.Expiration
End If

Response.Cookies.Add(cookie)

' Redirect browser back to originating page
Response.Redirect(Request.ApplicationPath)
End Sub

Private Function GetFormsAuthSettings() As System.Web.Configuration.AuthenticationSection
Return DirectCast(System.Configuration.ConfigurationManager.GetSection("system.web/authentication"), System.Web.Configuration.AuthenticationSection)
End Function

我之前使用过 FormsAuthentication.SetAuthCookie ,甚至尝试过 FormsAuthentication.RedirectFromLoginPage 方法,但是这些方法都有相同的结果,这就是为什么我最终完成了内部完成的硬 cookie 实现(通过在 Reflector 中查看) )FormsAuthentication 类所做的事情。

<小时/>

该问题无法在 Visual Studio 2008 asp.net 托管环境或 IIS 7.0 中重现。

<小时/>

编辑:启用 Cookie,甚至托管站点也已添加为受信任站点。

<小时/>

编辑:Google Chrome 和 Firefox 没有此问题。

<小时/>

编辑:目标计算机上的已验证 Cookie 设置为根据设置在 4 小时后过期(超时 = 240 分钟)。

<小时/>

编辑:正如豪斯所说,每个人都会撒谎。用户并未实际测试新的代码库,而是先入为主地认为该软件仍然存在问题。感谢在此主题中回复的所有人。

不会因为不再相关而关闭此问题,而是保留它以帮助人们解决问题,因为这个问题中有一些非常好的故障排除技术。

最佳答案

也可能(已经)未设置机器 key ,因此每次初始化应用程序时都会随机生成(这意味着加密的身份验证票证将使用新 key 加盐)。

我使用网站为我的应用程序生成新的机器 key 并将其粘贴到 web.config 中:

http://www.orcsweb.com/articles/aspnetmachinekey.aspx

<?xml version="1.0"?>

<configuration>

<appSettings/>
<connectionStrings/>
<system.web>

<machineKey validationKey='FED01BCB246D3477F5854D60388A701508AD1DF9099BD3CAC3CA4DAF55F7524B8DD3FA03133BBCA381BC1CD639730445968DFA633A97911187EF187456D692F4' decryptionKey='861E7DF7C2D04297EEFAD47FF3B95F54E87CF28D6C2753D8' validation='SHA1'/>

</system.web>
</configuration>

关于.net - ASP.Net 表单例份验证 10 分钟后注销用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/435719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com