首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

利用 View 實現 SQL Server 資料列級安全性

     編輯:MySQL 資料庫相關知識

需求背景

Access 前端連接 SQL Server 後端,需限制使用者僅能瀏覽被授權的資料列。

方案:搭配 SUSER_SNAME() 的 View

建立一張授權對照表 authtable,記錄使用者與資料主鍵的對應,再建立 View:

CREATE VIEW v_data AS
SELECT <COLUMN_LIST>
FROM dbo.mytable AS a
INNER JOIN dbo.authtable AS b
  ON a.Pkey = b.DataKey
 AND b.userid = SUSER_SNAME();

SUSER_SNAME() 回傳目前登入帳號,View 自動過濾出該使用者可見的資料列。

簡化版:直接在資料表加 userid 欄位

若授權邏輯單一,可直接在 mytable 增加 userid 欄位:

CREATE VIEW v_data AS
SELECT <COLUMN_LIST>
FROM dbo.mytable
WHERE userid = SUSER_SNAME();

此法無需額外 Join,效能更佳。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved