根据一周中的几天向用户授予系统访问权限



数据库:SQL Server。

我有一个场景,我需要根据周天数向用户授予系统访问权限。

我的意思是,假设用户a可以在但是用户B只能在星期一、星期三和星期五访问系统,而用户C只能在星期日、星期二、星期四访问系统。

如何为这种情况设计表格?

我设计了一张桌子。

用户

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

现在如何实现上述场景?请提出建议。

我将使用master数据库中的一个表。表包含用户名(与登录名相同)和他们访问的天数

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'

一旦你有了以上信息,你需要创建一个登录触发器,你也可以选择登录到数据库。。

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.将Execute作为SA很重要,因为有些登录名可能没有读取用户访问表的权限
2.首先存在确保我们不会检查所有用户
3.用户访问表中的登录名应与为用户创建的原始名称相匹配

现在,如果您尝试测试,testlogin1只能在今天访问,因为这是周日

相关内容

最新更新