.net HttpContext.Current.Request.LogonUserIdentity.IsAuthenticated返回False,即使用户已成功登录

.net HttpContext.Current.Request.LogonUserIdentity.IsAuthenticated返回False,即使用户已成功登录,.net,asp.net,vb.net,visual-studio,authentication,.net,Asp.net,Vb.net,Visual Studio,Authentication,2003年我在我的一个网站的一个子文件夹上实现了表单身份验证。我的代码在我的开发机器上运行得很好,但是在实时服务器上有一个小问题 如果浏览到“管理”子文件夹,如果未通过身份验证,将重定向到登录页面。母版页页脚还包含登录页的链接;当用户登录时,该链接应更改为指向管理员页面的链接: Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim link As H

2003年我在我的一个网站的一个子文件夹上实现了表单身份验证。我的代码在我的开发机器上运行得很好,但是在实时服务器上有一个小问题

如果浏览到“管理”子文件夹,如果未通过身份验证,将重定向到登录页面。母版页页脚还包含登录页的链接;当用户登录时,该链接应更改为指向管理员页面的链接:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim link As HtmlAnchor = FindControlIterative(Me, "Login")
    If HttpContext.Current.Request.LogonUserIdentity.IsAuthenticated Then
        link.InnerText = "Admin"
        link.HRef = "/admin/default.aspx"
    End If
End Sub
这在我的dev PC上运行良好,但在live server上,
IsAuthenticated()
返回False,因此登录链接不会被管理员链接替换。然而,如果浏览到管理子文件夹,我可以访问的内容罚款;没有重定向到登录页面

有什么想法吗


仅供参考:它托管在运行于Hyper-V之上的Windows 2003 VPS上。

您必须使用以下条件:

if(HttpContext.Current.User.Identity.IsAuthenticated)   
我附上一张图片供您澄清。

如果看到正在使用的属性的intellisense,则该属性将用于Windows身份验证,如说明中所示


本地工作的原因:当您登录到本地计算机并通过Windows验证后,它会向您返回true,但您部署在服务器中,情况并非如此,这就是为什么该属性总是返回false。

尝试调试web应用程序,而不是使用Visual Studio web server,而是使用。

Muhammad,我可以从同一个工作组中的其他机器访问我的开发站点,并且此代码仍然有效。它也被推荐在各种在线例子中。+1-我没有像我应该读的那样彻底地阅读你的帖子。我之前的评论站得住脚,但我没有发现您提供了我最终通过其他方式(Context.User.Identity.IsAuthenticated)遇到的解决方案。