簡體   English   中英

ASP.NET:如何防止其他用戶登錄帳戶訪問SQL Server中的某些表數據

[英]ASP.NET : how to prevent a certain table data in your SQL Server not being accessed by another User on Account Log In

我有一個基於會計系統的項目。 我有一張桌子Sales 但是,當用戶注冊時,他/她將被重定向到登錄頁面。 從那里,他們可以登錄自己的帳戶。

當幾個用戶登錄時不共享同一數據時,我將如何防止這些用戶登錄? 我將如何為每個數據分開該數據?

看看這個。 我有以下表格:

Users

  • Uid
  • 名稱
  • 電子郵件
  • 密碼
  • 確認密碼

Sales

  • Uid
  • 產品
  • 數量

我已經將sales表中的Uid與users表中的Uid列相關聯。 加載用戶的帳戶頁面時,我想在頁面加載時執行用T-SQL或C#編寫的代碼,這些代碼可以調用SQL命令以從用戶表中讀取用戶的Uid,並選擇該用戶在銷售中保存的相應數據表以分隔其他用戶保存的數據。

我已經研究過,但是即使從論壇上也沒有清楚地找到解決方案。 我希望有人不要告訴我,而要逐步向我展示有關如何歸檔此文件的代碼?

請有人可以幫我嗎? 真的很堆積。 :(

您要查找的內容稱為數據庫聯接。 T-SQL像這樣:

SELECT s.* 
FROM dbo.Sales AS s 
INNER JOIN dbo.Users AS u ON u.UID = s.UID
WHERE u.UID = @YourUserID

沒什么特別的,沒有魔術(沒有事務/隔離級別,這是一個完全不同的主題),只是普通的SQL。

這可能有很大幫助(在我鑽得太深而無法忘記之前,這里的圖表在我的牆上固定了幾個月): https : //www.codeproject.com/Articles/33052/Visual-Representation-of-SQL -加入

在此處輸入圖片說明

有很多方法可以在應用程序層中實現此目的。 通常,您可以在某處訪問當前登錄的用戶ID,此時可以使用ADO:

public List<SalesInfo> GetSalesInfo(int userID) {

    using (SqlConnection conn = new SqlConnection(_connectionString))
        using (SqlCommand cmd = new SqlCommand(conn)) {

            cmd.CommandText = "SELECT s.* FROM ..." // insert sql statement here
            cmd.Parameters.AddWithValue("@YourUserID", userID);

            var adapter = new SqlDataAdapter(cmd);
            var table = new DataTable();

            conn.Open();
            adapter.Fill(table);
            conn.Close();

            var results = new List<SalesInfo>();

            foreach (DataRow row in table.Rows) {
                results.Add(new SalesInfo() {
                    SomeProperty = row['ColumnName'].ToString(),
                    OtherProperty = int.Parse(row['OtherColumn'])
                });
            }

            return results;         
        }   
}

(請注意,上面的代碼中的最佳實踐還很少:僅出於演示目的)

或者,您可以設置實體框架,一旦配置完成,它將更易於使用:

var salesData = _context.SalesData.Where(x => x.UserID == myUserID).ToList();

總而言之,大約有1000種方法可以給這只貓剝皮。 但是從兩個表中獲取相關數據是一個簡單的數據庫級聯接。 隨便使用您的應用。

暫無
暫無

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

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