文章目錄
1。登入頁面LOGIN.ASPX.CS 中將使用者的資訊寫入了CONTEXT.USER
//把目前使用者對象執行個體賦給Context.User,這樣做將會把完整的使用者資訊載入到ASP.NET提供的驗證體系中 Context.User = newUser;
2.在驗證完畢後將使用者資訊列印出
string aaa = Context.User.Identity.Name;
結果發現始終是驗證不了,跟蹤發現這裡的aaa變成了WINDOWS的登入使用者資訊,應該如何處理呢?
也就是說FORMS驗證變成了WINDOWS驗證了
查閱MSDN
FROMS驗證:
通過 Forms 身分識別驗證,可以使用所建立的登入表單驗證使用者的使用者名稱和密碼。未經過身分識別驗證的請求被重新導向到登入頁,使用者在該頁上提供憑據和提交表單。如果應用程式對請求進行了驗證,系統會頒發一個票證,該票證包含用於重建後續請求的標識的密鑰。
使用 Forms 身分識別驗證的一個簡便方法是使用 ASP.NET 成員資格(它儲存使用者憑證)和 ASP.NET 登入控制項(可用於建立登入頁)。
一種使用 Forms 身分識別驗證的方便途徑是使用 ASP.NET 成員資格和 ASP.NET 登入控制項。ASP.NET 成員資格提供了儲存和系統管理使用者資訊的方式,並包含對使用者進行身分識別驗證的方法。ASP.NET 登入控制項使用 ASP.NET 成員資格,並封裝提示使用者輸入憑據、驗證使用者、恢複或替換密碼等操作所需的邏輯。實際上,ASP.NET 成員資格和 ASP.NET 登入控制項在 Forms 身分識別驗證之上提供了一個抽象層,從而取代了要使用 Forms 身分識別驗證通常必須完成的大部分甚至所有工作
配置應用程式使用 Forms 身分識別驗證
如果應用程式的根目錄中有 Web.config 檔案,請開啟該檔案。
如果應用程式的根資料夾中沒有 Web.config 檔案,請建立一個名為 Web.config 的文字檔,並在其中添加下列元素:
<?xml version="1.0"?><configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> <system.web> </system.web></configuration>
在 system.web 元素中,建立一個 authentication 元素,並將它的 mode 屬性設定為 Forms,如下面的樣本所示:
-
<system.web> <authentication mode="Forms"> </authentication></system.web>
在 authentication 元素中,建立一個 forms 元素,並設定下列屬性:
<system.web> <authentication mode="Forms"> <forms loginUrl="Logon.aspx" name=".ASPXFORMSAUTH"> </forms> </authentication></system.web>
在 system.web 元素中,建立一個 authorization 元素。
<system.web> <authentication mode="Forms"> <forms loginUrl="Logon.aspx" name=".ASPXFORMSAUTH"> </forms> </authentication> <authorization> </authorization></system.web>
在 authorization 元素中,建立一個 deny 元素,並將其 users 屬性設定為“?”。這是指定將拒絕未通過身分識別驗證的使用者(由“?”表示)訪問該應用程式中的資源。
<system.web> <authentication mode="Forms"> <forms loginUrl="logon.aspx" name=".ASPXFORMSAUTH"> </forms> </authentication> <authorization> <deny users="?" /> </authorization></system.web>
儲存並關閉 Web.config 檔案。
那麼根據我這裡的實際情況 修改WEB.CONFIG 如下:
<authentication mode="Forms"> <forms name="forums" path="/" loginUrl="login.aspx" protection="All" timeout="40"> </forms> </authentication>