2003我已经在我的一个网站上的一个特定子文件夹上实现了表单身份验证。我的代码在我的开发机器上完美运行,但是在实时服务器上有一个小问题。
如果您浏览到admin子文件夹,如果未经过身份验证,您将被重定向到登录页面。主页面页脚还包含指向登录页面的链接;当用户登录时,该链接应该更改为指向管理页面的链接:
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,因此Login链接不会替换Login链接。但是,如果浏览到admin子文件夹,我可以正常访问内容;没有重定向到登录页面。
有什么想法吗?
仅供参考:它托管在运行在Hyper-V之上的Windows 2003 VPS上。
答案 0 :(得分:2)
你必须使用像...这样的条件。
if(HttpContext.Current.User.Identity.IsAuthenticated)
我附上了一张图片供您澄清。
如果您看到正在使用的属性的智能感知,则用于Windows身份验证,如说明中所示。
原因在本地工作:当您登录到本地计算机并通过Windows进行身份验证时,它会返回true给您,但是您在服务器中部署,情况不是那样的,这就是为什么该属性总是返回false。
答案 1 :(得分:0)
尝试使用Visual Studio Web Server调试Web应用程序,但使用IIS Express。