2016-03-27 78 views
1

數據庫:SQL Server。根據星期幾向系統授予系統訪問權限

我有一個場景,我需要根據工作日的天數授予系統對用戶的訪問權限。

我的意思是假設用戶A可以訪問系統7天的 周,但用戶B只能在星期一,星期三和星期五訪問系統,用戶C只能在星期日,星期二,星期四。

如何爲此場景設計表格?

我設計了一張桌子。

用戶

userId int not null, 
userName varchar(25), 
userStatus varchar(1) 

現在如何實現上面的場景?請建議。

+0

感謝您的評論原來的名稱。但在這裏,我希望平日訪問的業務邏輯,而不是存儲密碼。我只是創建了一個表格,以方便。請關注主要問題。謝謝! – nischalinn

+0

感謝您的建議。如果您有任何問題的解決方案,請回復。這將非常感激。 – nischalinn

+0

一種方法是在您的數據庫中添加2個表格: 一個將保存星期幾,一個將加入用戶和工作日。 –

回答

1

我將與主database.Table中包含用戶名(相同的名稱,登錄)單個表和日子裏,他們有機會獲得

create table usersacess 
(
username varchar(30), 
accessdays char(10) 
) 


insert into usersacess 
select 'testlogin1','sunday' 
union all 
select 'testlogin','monday' 
union all 
select 'testlogin','tuesday' 

去一旦你有了上述信息,你需要創建一個登錄觸發器,您可以選擇登錄到DB以及..

alter TRIGGER connection_limit_trigger 
ON ALL SERVER with execute as 'sa' 
FOR LOGON 
AS 
BEGIN 
if exists(select 1 from usersacess where username=original_login()) 
begin 
if not exists(select 1 from usersacess where username=ORIGINAL_LOGIN() and accessdays=datename(dw,getdate())) 
begin 
rollback; 
end 
end 

END; 

幾點要注意:

1.with作爲SA執行很重要,因爲某些登錄可能無法讀取用戶訪問表
2.首先確認我們沒有檢查所有用戶
3.用戶訪問表中的登錄名應該匹配與用戶

創建現在,如果你嘗試測試,testlogin1只能訪問的今天,因爲它是星期天