用户认证管理设计方案
1设计思路
为了设计一套具有较强可扩展性的用户认证管理, 需要建立用户、角色和权限等数据库
表,并且建立之间的关系,具体实现如下。
用户
用户仅仅是纯粹的用户,用来记录用户相关信息,如用户名、 密码等,权限是tor具有创建角色和删除角色的功能:
存储过程 CreateRoleInfo (***@RoleName,***@RoleNote )创建角色信息;
存储过程DeleteRoleInfo(***@RoleID)删除角色信息;
3) Administrator具有建立用户和角色、角色和权限的关联关系功能:
存储过程 GrantUserRole (***@UserID,***@RoleID,***@UserRoleNote )建立用户和角色的关 联关系;
存储过程DeleteUserRole(***@UserRoleID)删除用户和角色的关联关系;
存储过程 GrantRolePermission(***@RoleID,***@PermissionID,***@RolePermissionNote)建立 角色和权限的关联关系;
存储过程DeleteRolePermission(***@RolePermissionID)删除角色和权限的关联关系;
第三步用户(User)使用Administrator分配给的权限去使用各个系统模块。 利用存储过
程 GetUserRole (***@UserID, ***@UserRoleID output ) ,GetRolePermission (***@RoleID,***@Role- -PermissinID output )获得用户对模块的使用权限。
当用户通过验证后,由系统自动生成一个 128位的TicketID保存到用户数据库表中,
建立存储过程 Login (***@UserID,***@UserPwd,***@TicketID output )进行用户认证, 认证通过得到 一个TicketID ,否则TicketID为null。其流程图如下:
图1 Login流程图
得到TicketID 后,客户端在调用服务端方法时传递TicketID,通过存储过程 JudgeTicketPermission (***@TicketID,***@PermissionID )判断 TicketID 对应的用户所具有的权限, 并根据其权限进行方法调用。
当用户退出系统时, 建立存储过程Logout (***@UserID)来退出系统。当用户异常退出系
统时,根据最后的登陆时间(LastSignTime )确定用户的TickeID ,建立存储过程 ExceptionLogout (***@UserID,***@LastSignTime )处理用户的异常退出。
图2 Logout流程图
WebService可以采用 SoapHeader中写入TicketID 来使得TicketID从客户端传递给服务 端。.Net Remoting可以采用CallContext类来实现TicketID从客户端传递给服务端。 2数据库设计 图3数据库关系图 用户表(Static_User) Static_User Static_User字段名详细解释 类型 备注
UserID 路线编号 varchar(20) PK
UserName 用户名称
用户权限设计方案 来自淘豆网m.daumloan.com转载请标明出处.