2013-05-27 57 views
0

我已经设置了验证基于我从MCTS自控进度培训工具包MCTS考试70-562理解下面的表格,但它不验证...窗体身份验证不验证

<authentication mode="Forms"> 
     <forms name="ortund" loginUrl="~/Login.aspx" timeout="30" slidingExpiration="true" /> 
    </authentication> 
</system.web> 

<location path="Members"> 
    <system.web> 
     <authorization> 
      <deny users="?" /> 
     </authorization> 
    </system.web> 
</location> 

基本上它需要允许未经身份验证的用户访问网站的所有区域,除了~/Members/以及其中的所有文件和文件夹。

目前它所做的一切只是重定向回登录页面...有没有我在这里失踪的概念?我不明白我做错了什么。

下面是登录代码:

Protected Sub lnkLogin_Click(sender As Object, e As System.EventArgs) Handles lnkLogin.Click 
    Dim db As New Database 

    ' gets data from the database with the supplied credentials 
    ' if true, the user exists, proceed to log in 
    If db.Login(txtEmail.Text, txtPassword.Text, "ortund") Then 
     FormsAuthentication.RedirectFromLoginPage(txtEmail.Text, True) 

     If Not String.IsNullOrEmpty(Request.Params("ReturnUrl")) Then 
      Response.Redirect(Request.Params("ReturnUrl")) 
     Else 
      Response.Redirect("~/Members/Default.aspx") 
      'Response.Redirect("~/AboutUs.aspx") 
     End If 
    Else 
     lblerr.Text = "Invalid username or password" 
    End If 
End Sub 

而且在Page_Load会员/ Default.aspx的:

Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load 
    If Not IsPostBack Then 
     If Context.User.Identity.IsAuthenticated Then 
      loadUserPage() 
     End If 
    End If 
End Sub 
+0

据我的理解,这应该工作,允许30分钟的超时时间重置,当用户执行操作... – Ortund

回答

0

Aaaaand全都在震耳欲聋的甜食2狂揽小时打完,IRC, Facebook和Skype ...下面是我修复这个问题的方法:

我创建了一个测试应用程序,以确保我有正确的概念。该测试仅在以上方面有所不同,因为它使用web.config文件中指定的凭据作为登录名,而实际项目会在数据库中查询用户凭据。

您可以下载我的测试代码here(它使用.NET 4,但您也可以将web.config文件中的相同身份验证元素应用到较早的框架中)。

因为这个测试案例的工作原理,我可以确定问题不在代码中,这意味着它是一个设置问题。

解决方案
在这种情况下的修复很简单。我从IIS中删除了虚拟应用程序,并用.NET 4.0 Classic AppPool重新创建它。