EnterPrise 中的SAB(既安全应用程序块)是一个非常有用、高效的模块;并且可以对用户、角色以及权限等进行非常灵活的管理,在业务流程以及角色、用户变化时候,基本不必重新修改原来的编码逻辑,重新设计业务流程,重新编写源代码,而只需要在数据库或者配置文件中进行几种组合就可以达到效果。
本文主要对SAB的认证环节进行一些说明。
首先在进入SAB认证处理之前,还是有很多工作要做的,比如对config文件进行配置,写存储过程等,对config进行配置的环节,请参考:TerryLee写的[安全应用程序块——入门篇]
http://www.cnblogs.com/Terrylee/archive/2005/10/25/261414.html
下面是要用到的存储过程:
其中要注意的是:在建立用户表的时候,password字段一定要用二进制varbinary,因为该字段要涉及到加密。该过程中只简单涉及到一个用户表,例子中的表为userOk,字段有U_ID,UserName,UserPWS三个字段。
--InsertUser用于添加用户,与密码
CREATE PROCEDURE dbo.InsertUser
@name nvarchar(256),
@password varbinary(64),
@userExists tinyint out
AS

IF EXISTS (SELECT UserName FROM userok WHERE UserName = @name)
BEGIN
SELECT @userExists = 1
RETURN
END

SELECT @userExists = 0

SELECT @password = IsNull(@password, 0x691B0FBEED8F399F7E12576B090B217E4AD88A09)

INSERT INTO Userok
(UserName, userpws)
VALUES
(@name, @password)
RETURN
GO
--=================================================
--GetPassword通过用户名读取密码
CREATE PROCEDURE GetPassword

@name nvarchar(256)
AS
SET NOCOUNT ON

SELECT
userpws
FROM Userok
WHERE UserName = @name

SET NOCOUNT OFF

RETURN
GO
--=================================================
--GetUserIdByName验证用户是否存在
CREATE PROCEDURE dbo.GetUserIdByName
@name nvarchar(256),
@userId int OUT
AS

SELECT @userId = U_ID
FROM Userok
WHERE UserName = @name

RETURN
GO
--=================================================
有了表,有了存储过程,有对SAB做好了配置工作,下面就可以进入代码阶段了,当然做代码前要把相关的类引入进来,并做声明。
建立用户账户:
到此,就利用EnterPrise SAB模块中的认证部分进行登陆判断,其中用户的删除操作也很简单用UserRoleManager中的DeleteUser方法就可以了。