数据库中建一个权限表,存放操作。权限表rights
-------------
id name
1 浏览
2 编辑
3 审核
用户组表usergroup
-------------
id name
1 管理组
2 会员组
现在要把权限赋矛给用户组,怎么赋予呢?想到两种方法:第一种:
在用户组表中增加一个字段rights,将用户组拥有的权限id值以豆号分隔组成字符串存入。
如:
id name rights
1 管理组 1,2,3第二种:
按照三范式增加一个 用户组--权限 的关联表实现多对多的关联。该用哪种方式呢?
-------------
id name
1 浏览
2 编辑
3 审核
用户组表usergroup
-------------
id name
1 管理组
2 会员组
现在要把权限赋矛给用户组,怎么赋予呢?想到两种方法:第一种:
在用户组表中增加一个字段rights,将用户组拥有的权限id值以豆号分隔组成字符串存入。
如:
id name rights
1 管理组 1,2,3第二种:
按照三范式增加一个 用户组--权限 的关联表实现多对多的关联。该用哪种方式呢?
解决方案 »
- 问 ASP.NET cs文件改动过后是否 就要重新编译才生效?
- fck编辑器里面有 FredCK.FCKeditorV2.pdb 是干嘛的呢
- asp.net中用 string Replace(" ", " ");显示空格,分段问题
- VS2008 自带的水晶报表在win2003 Server IIS6中无法打印
- 今天偶然发现了一款非常好的在线编辑工具KindEditor,与大家共享,同时请教个问题!!!!!
- 回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %>
- C#.net与finereport之间怎么关联
- DataGrid中跨页面实现多选,在哪里保存选中值???
- IE超链接
- 我实在写不好
- frameset布局问题
- 一个button的Visible为false,为什么运行后找不到这个控件?
第二种处理起来容易明白,而且扩展性好多了。
将来增加新的权限的时候不用去修改代码,而第一种方式会修改很多代码。
设置会修改rights列的长度等!
如admin角色
if(User.IsInRole("admin"))
{
...
}
Roles (ID)
UsersInRoles (UserID,RoleID)
--用户基本表 DROP Table [Users]
Create Table [Users]
(
--用户ID
[ID] int identity(1,1) Not Null,
--用户名
[Username] varchar(50) Not Null Unique,
--密码
[Password] varchar(256) Not Null,
--昵称
[Netname] nvarchar(50) Not Null Unique,
--邮箱
[Email] varchar(50) Null,
--密保问题
[Question] nvarchar(50) Null,
--密保回答
[Answer] varchar(256) Null,
--锁定状态
[IsLockedOut] bit Not Null Default(0),
--创建时间
[CreationDate] smalldatetime Not Null Default(GetDate()),
--最后锁定时间
[LastLockedOutDate] smalldatetime Null,
--最后登录时间
[LastLoginDate] smalldatetime Null,
--最后活动时间
[LastActivedDate] smalldatetime Null,
--最后更改密码时间
[LastPasswordChangedDate]smalldatetime Null,
--登陆失败次数
[FailedPasswordAttemptCount] smallint Not Null Default(0),
--最后登录失败时间
[FailedPasswordAttemptWindowStart] smalldatetime Null,
--密保回答失败次数
[FailedAnswerAttemptCount] smallint Not Null Default(0),
--最后密保回答失败时间
[FailedAnswerAttemptWindowStart] smalldatetime Null,
--CookieKey
[CookieKey] varchar(8) Null,
/*****主键约束*****/
Constraint [PK_Users_ID] Primary Key([ID])
)
GO--角色表 DROP Table [Roles]
Create Table [Roles]
(
--角色编号
[ID] int identity(1,1) Not Null,
--角色名
[Rolename] nvarchar(50) Not Null Unique,
/*****主键约束*****/
Constraint [PK_Roles_ID] Primary Key([ID])
)GO--权限表 DROP Table [UsersInRoles]
Create Table [UsersInRoles]
(
--用户编号
[UserID] int Not Null,
--角色编号
[RoleID] int Not Null,
/*****主键约束*****/
Constraint [PK_UsersInRoles_UserID_RoleID] Primary Key([UserID],[RoleID]),
--关联至 Users 的 [ID]
Constraint [FK_UsersInRoles_Users_ID] Foreign Key ([UserID]) References [Users]([ID]) On Delete Cascade On Update Cascade,
--关联至 Roles 的 [ID]
Constraint [FK_UsersInRoles_Roles_ID] Foreign Key ([RoleID]) References [Roles]([ID]) On Delete Cascade On Update Cascade
)GO