2011-04-10 92 views
0

2003我已在一个特定子文件夹上的一个站点上实施了表单身份验证。我的代码可以在我的开发机器上完美工作,但活动服务器上存在一个小问题。即使用户已成功登录,HttpContext.Current.Request.LogonUserIdentity.IsAuthenticated也会返回False

如果您浏览到管理子文件夹,如果您未通过身份验证,您将被重定向到登录页面。主页页脚还包含到登录页面的链接;当用户登录时,该链接是应该改变的链接管理页面:

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 

这工作我的开发PC上正常,但活的服务器上,IsAuthenticated()返回FALSE,因而登录链接不会被管理员链接取代。但是,如果浏览到管理子文件夹,我可以正常访问内容;没有重定向到登录页面。

有什么想法?

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

回答

2

你必须使用一个条件如..

if(HttpContext.Current.User.Identity.IsAuthenticated) 

我重视的形象,为您的澄清。 enter image description here

如果您看到您正在使用的属性的智能识别,如说明中所示,它用于Windows身份验证。

原因在本地工作:当您登录到本地计算机和由Windows身份验证,则返回true给你,但你在服务器上部署,情况不是这样的,这就是为什么该属性返回始终假。

+0

Muhammad,我可以从同一工作组中的其他机器访问我的开发站点,并且此代码仍然有效。这也是在各种在线示例中推荐的。 – CJM 2011-04-10 19:55:18

+0

+1 - 我没有像我应该的那样彻底阅读你的文章。我以前的评论的立场,但我没有发现,你提供了我最终遇到的解决方案,通过其他方式('Context.User.Identity.IsAuthenticated')。 – CJM 2011-04-10 20:37:19

相关问题