我目前正在使用SQLMembership提供程序學習表單身份驗證。 ASP:登錄控制似乎不認證。這裏是我的測試場地,我的本地機器的結構:ASP:登錄未驗證
~/LoginTest/
Default.aspx
CreateUser.aspx
lostpassword.aspx
web.config
/login/
Login.aspx
ProtectedStuff.aspx
web.config
在我加入以下節點的LoginTest文件夾中的web.config文件:在
<connectionStrings>
<add name="EvgSqlConnection" connectionString="connection string" />
</connectionStrings>
<authentication mode="Forms">
<forms name="LoginTest" loginUrl="~/login/Login.aspx" path="/login"
cookieless="UseCookies" />
</authentication>
<membership defaultProvider="mySqlProvider" userIsOnlineTimeWindow="15">
<providers>
<clear/>
<add
name="mySqlProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="EvgSqlConnection"
applicationName="LoginTest"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
requiresUniqueEmail="true"
passwordFormat="Hashed" />
</providers>
</membership>
<roleManager enabled="true" defaultProvider="mySqlRoleProvider" cacheRolesInCookie="true" cookieProtection="All">
<providers>
<clear/>
<add name="mySqlRoleProvider" applicationName="LoginTest" connectionStringName="EvgSqlConnection"
type="System.Web.Security.SqlRoleProvider"/>
</providers>
</roleManager>
在web.config登錄文件夾,我有以下:
<configuration>
<appSettings/>
<connectionStrings/>
<system.web>
<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
</system.web>
</configuration>
那麼這是應該從我讀做的是拒絕用戶訪問任何東西在登錄文件夾中。在這種情況下,我的測試文件是ProtectedStuff.aspx,它只不過是帶有標籤的頁面。目前發生的事情是,除ASP之外,一切似乎都奏效:登錄控制。我現在可以使用ASP創建一個新用戶:CreateUser.aspx上的CreateUserWizard。我可以使用在LostPssword.aspx上使用ASP:PasswordRecovery控件設置的問題和答案來恢復新密碼。我可以在ASP中輸入正確的名稱和密碼:Login.aspx上的登錄控制。唯一不起作用的是實際的認證。每當我嘗試訪問ProtectedStuff.aspx時,它都會將我踢回Login.aspx,就像它在您未通過身份驗證時所應該的那樣。此外,我可以輸入錯誤的用戶名或密碼錯誤,登錄控件抱怨。我可以在網站管理頁面看到我的用戶,我可以看到用戶被分配了一個角色。
有後面的任何這些控件的任何自定義代碼,所有我做的是複製在sqlProvider的名字進入這些控件的屬性的MembershipProvider。 SQL Server 2000配置了具有aspnet_Membership完全訪問權限的NT AUTHORITY \ Network Service用戶。配置文件似乎沒問題,所有控件似乎都能夠正確讀寫數據庫,只有Login控件似乎沒有對用戶進行身份驗證。我還應該尋找什麼?提前致謝!
- 湯姆
嗨,嘗試創建一個使用上下文中的頁面.User.Identity.IsAuthenticated方法並查看用戶是否實際進行了身份驗證。如果用戶不是,則該方法返回null。 – keyboardP 2010-01-14 23:08:55
是的,或者在頁面上放置一個LoginName或LoginStatus控件,看看是否顯示了匿名或認證模板。 – 2010-01-14 23:35:09