开发日记2
这次准备开发一个标准的用户体系。从而以后的项目可以简化这部分。
标准用户管理体系设计
Jacty Studio 2007-1-1
一、模式概述
1.系统软件要求:.net framework2.0 ms-Sqlserver/ms-Access
2.本系统实现了以下功能:用户认证、用户查找、权限管理。
3.本系统实体包括:用户、权限,两者为多多对应关系。
4.区别于“用户-组-权限”的系统,本系统去掉了“组”的概念,故适合于轻量级开发。
二、表结构设计
1用户表
JSUser (Access版)
列名
|
标实
|
类型
|
是否为空
|
备注
|
UserID
|
用户编号
|
文本(50)
|
N
|
PK
|
UserName
|
用户名
|
文本(30)
|
N
|
|
UserPassword
|
用户密码
|
文本(30)
|
N
|
|
UserQuestion
|
密码问题
|
文本(100)
|
|
|
UserAnswer
|
问题答案
|
文本(100)
|
|
|
UserEmail
|
用户邮箱
|
文本(100)
|
|
|
UserRegisterTime
|
注册时间
|
日期/时间
|
|
默认
Now()
|
UserStatus
|
状态
|
数字 整型
|
|
默认0(开放) 1(锁定)
|
2.权限表 JSAuthority
(Access版)
列名
|
标实
|
类型
|
是否为空
|
备注
|
AuthorityID
|
权限编号
|
文本(50)
|
N
|
PK
|
AuthorityName
|
权限名
|
文本(50)
|
N
|
|
AuthorityGroup
|
权限分组
|
文本(50)
|
|
方便分组显示
|
AuthorityBelong
|
权限所属模块
|
文本(50)
|
|
应用于多子系统的网站。默认“无模块”
|
3.权限-用户表 JSUA (Access版)
列名
|
标实
|
类型
|
是否为空
|
备注
|
AuthorityID
|
权限编号
|
文本(50)
|
N
|
|
UserID
|
用户编号
|
文本(50)
|
N
|
|
1用户表
JSUser (sqlserver版)
列名
|
标实
|
类型
|
是否为空
|
备注
|
UserID
|
用户编号
|
uniqueidentifier
|
N
|
PK
|
UserName
|
用户名
|
nvarchar(30)
|
N
|
|
UserPassword
|
用户密码
|
nvarchar(30)
|
N
|
|
UserQuestion
|
密码问题
|
nvarchar(100)
|
|
|
UserAnswer
|
问题答案
|
nvarchar(100)
|
|
|
UserEmail
|
用户邮箱
|
nvarchar(100)
|
|
|
UserRegisterTime
|
注册时间
|
datetime
|
|
默认
getdate()
|
UserStatus
|
状态
|
tinyint
|
|
默认0(开放) 1(锁定)
|
2.权限表 JSAuthority
(sqlserver版)
列名
|
标实
|
类型
|
是否为空
|
备注
|
AuthorityID
|
权限编号
|
uniqueidentifier
|
N
|
PK
|
AuthorityName
|
权限名
|
nvarchar(50)
|
N
|
|
AuthorityGroup
|
权限分组
|
nvarchar(50)
|
|
方便分组显示
|
AuthorityBelong
|
权限所属模块
|
nvarchar(50)
|
|
应用于多子系统的网站。默认“无模块”
|
3.权限-用户表 JSUA (sqlserver版)
列名
|
标实
|
类型
|
是否为空
|
备注
|
AuthorityID
|
权限编号
|
uniqueidentifier
|
N
|
PK
|
UserID
|
用户编号
|
uniqueidentifier
|
N
|
PK
|
三、类接口及说明
1.说明
用户类
|
查找一个用户
|
增加一个用户
|
删除一个用户
|
根据新密码、密码提问修改密码
|
修改密码问题
|
修改状态
|
获取所有用户
|
获取当前注册的最新的
10
个用户
|
权限类
|
增加权限
|
删除权限
|
修改权限说明
|
查找一个权限
|
按模块查权限分组
|
按模块+分组查找权限
|
安全类
|
根据用户名权限验证资格
|
根据用户名、密码验证登陆
|
退出登陆
|
获取当前用户
|
生成主键
|
配置类
|
配置数据库名
|
配置使用何种数据存储(
sqlserver/Access/XML
)
|
2.类图设计
四、使用帮助
1.如何解决每个子系统有独立的用户字段的问题?
在每个子模块建立用户明细表,与标准用户表发生一一对应的关系。
2.如何创建一个用户?
ISUser s=UserFactory.CreateUser();
s.name=”nameTest”;
s.pass=”namePass”;
s.Add();
3.只在某个子系统删除用户,而不想影响其他子系统该如何操作?
在子系统的用户明细表中创建一个“用户状态”字段,用来存储用户是否被删除。