簡體   English   中英

如何將aspnetdb數據庫用戶表與登錄控制連接起來?

[英]how to connect aspnetdb database user table with login control?

我對 asp.net 有疑問。 我使用 aspnet_regsql 或 aspnet 管理向導創建了用戶、角色、成員資格和其他相關表。 這樣,在 asp_data 文件夾中創建了一個數據庫 aspnetdb.mdf。 在此數據庫中,用戶表存儲有關用戶憑據的所有信息。 現在我的問題是如何將此用戶表連接到工具箱中提供的登錄控件。 是否可以將這些 aspnetdb 數據庫表與登錄控制連接起來,或者我將不得不為它創建一個單獨的登錄界面。

您應該能夠將登錄控件放入該 web 頁面。 但是,在您這樣做之前,請在該數據庫中創建一個簡單的測試表。 您可以打開並從該表中提取數據嗎?

因此,您需要在 web.config 中設置兩個連接。 一個連接用於從該數據庫中的任何表中提取數據的通用代碼。 另一個連接是您為用戶和身份驗證指定的連接。 現在在大多數情況下,這兩個連接(一個用於登錄、用戶和身份驗證)將與您為通用代碼和應用程序設置的另一個連接相同,以從該數據庫中提取數據。

因此,連接將如下所示:

對於一般代碼而不是登錄的東西:

<connectionStrings>
   <add name="MyCoolApp" connectionString="Data Source=.\SQLEXPRESS;database=MyDataBaseName;UID=MyDataBaseUser;PWD=MySillyPassword;
   APP=WebPortal;WSID=WebPortal" providerName="System.Data.SqlClient" />

因此,上面是與您用於應用程序數據的“通用”數據庫的連接。

現在不清楚您是否已創建或計划創建身份驗證表(您使用向導創建的那些)並且是否將使用 SAME 數據庫作為您的應用程序數據。

因此,以上將獲取/給予/允許您的應用程序代碼基於該連接打開數據表。

因此,現在在代碼中,您可以使用以下方法獲取連接字符串和打開表等:

Dim conStr as string
conStr = ConfigurationManager.ConnectionStrings("MyCoolApp").ConnectionString

dim rstTable as new DataTable
dim strSQL as string = "SELECT * from tblHotels"
    
Using cmdSQL As New SqlCommand(strSQL,
                   New SqlConnection(conStr))

    cmdSQL.Connection.Open
    rstTable.Load(cmdSQL.ExecuteReader)

End Using

因此,以上是您為打開+使用數據庫而編寫的“通用”代碼示例。

但是,對於登錄(身份驗證系統),您還需要在 web.config 連接配置部分中有一個連接字符串。 它“可以”是與您的應用程序相同的數據庫 - 您的選擇。 那么,您運行這些向導(腳本)以創建表的數據庫是什么?

您需要“告訴”系統為這些表使用什么連接。

因此,在上述連接字符串區域中,您指定了整個登錄和安全系統的連接。 該連接字符串可以是相同的密碼,並且與上面的應用程序設置相同 - 但格式略有不同。

它看起來像這樣:

<add name="FBAConnectionString" connectionString="server=.\SQLEXPRESS;database=MyCoolDatabase;
UID=SomeUser;PWD=SomePassword;
" providerName="System.Data.SqlClient" />

所以上面是連接你的登錄控件的“東西”。 如果您在上面添加,那么是的,您只需放入登錄控件即可。

因此,這意味着您可以為登錄系統使用單獨的數據庫,或者我們通常使用與通用代碼連接相同的數據庫。

現在,不清楚您用於創建 web 站點的模板是什么,但您還需要一個部分。 講述如何使用您擁有的“角色”(哪些安全組)的部分。

你需要告訴系統

<membership defaultProvider="MySqlprovider">
  <providers>
    <clear />
    <add name="MySqlProvider" type="ajaxsetuptest1.MySqlprovider" connectionStringName="FBAConnectionString" 
   enablePasswordRetrieval="true" 
   enablePasswordReset="true" 
   minRequiredPasswordLength="3" 
   writeExceptionsToEventLog="false" />
  </providers>
</membership>
<roleManager enabled="true" defaultProvider="MyRoleProvider">
  <providers>
    <clear />
    <add connectionStringName="FBAConnectionString" 
     name="MyRoleProvider" type="ajaxsetuptest1.MyRoleProvider" />
  </providers>
</roleManager>

因此,上述所有配置一旦設置將告訴登錄系統:

用於成員資格的表(在角色中)。 如您所見,這些設置基於您設置的連接。

而且您還需要告訴“整個”系統登錄頁面應該是哪個頁面。 由於您經常讓用戶 go 訪問 web 站點 - 但尚未登錄。但是如果您設置正確,那么如果用戶嘗試使用任何需要安全性的 web 頁面? 然后系統會自動將用戶引導到登錄頁面(您甚至不必為此編寫代碼)。

因此,另外一個設置應該告訴系統您將使用哪種安全,以及用戶將被引導到哪個 web 頁面以進行登錄頁面。

<authentication mode="Forms">
  <forms loginUrl="~/Account/Login.aspx" defaultUrl="~/Default.aspx" />
</authentication>

因此,您可以創建的登錄頁面(如果您使用 web 站點應用程序模板,則會創建一個)是 Login.aspx。 在該頁面中,您可以(並且將)放入您的登錄控件。

如果您在創建 web 項目時使用模板,則上述大多數設置 - 甚至登錄頁面都將為您創建。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM