2016-03-27 76 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只能访问的今天,因为它是星期天