首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据每周的天数向用户授予系统访问权限

根据每周的天数向用户授予系统访问权限
EN

Stack Overflow用户
提问于 2016-03-27 10:53:16
回答 1查看 61关注 0票数 0

数据库: Server。

我有一个场景,我需要在每周的几天内授予用户系统访问权限。

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

如何为此场景设计表?

我设计了一张桌子。

用户

代码语言:javascript
复制
userId int not null,
userName varchar(25),
userStatus varchar(1)

现在如何实现上述场景?请建议一下。

EN

回答 1

Stack Overflow用户

发布于 2016-03-27 15:01:33

我将在主database.Table中使用一个表,其中包含用户名(与登录名相同),以及它们可以访问的天数。

代码语言:javascript
复制
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。

代码语言:javascript
复制
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 as SA很重要,因为有些登录可能无法读取usersaccess表 2.首先要确保,我们不是在检查所有用户 3. usersacess表中的登录名应与为用户创建的原始名称相匹配。

现在,如果您尝试测试,testlogin1今天只能访问,因为现在是星期天。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36246526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档