请教四色原型

09-01-08 Lay
有一个短信动态验证码登录功能,具体需求如下

1.启用动态验证码:用户输入用户名、密码,服务器验证通过,发送动态验证码给用户;

用户输入动态密码,服务器验证通过,允许用户登录系统。

关闭动态验证码:用户输入用户名、密码,服务器验证通过,即可登录系统。

以上情况要求可做配置。

2.可用UID、UID和PASSWORD 2种方式申请动态验证码。

3.IP绑定功能。当系统配置为启用动态验证码时,系统还可配置是否启用IP绑定,

若启用IP绑定,且客户端登录IP在符合IP绑定策略,则不发送动态验证码,

否则,发送动态验证码。

以下是我的分析:

把可配置的各种情况看成是服务器的各种认证中心(role)

BasicAuthority,DynamicAuthority,IPBindAuthority

BasicAuthority(role)验证(mi)用户(ppt)

DynamicAuthority(role)验证(mi)用户(ppt),并发送(mi)动态验证码(desc)

IPBindAuthority(role)验证(mi)用户(ppt),检查IP绑定策略,判断是否发送(mi)验证码(desc)

四色图如下

这样设计是否合理?

[该贴被Lay于2009-01-08 20:19修改过]


    

banq
2009-01-09 09:14
初看还是很好的,暂时看不出问题,你这个需求有一个特殊性,本身就是针对用户角色权限的。

IPBIndPolicy和DynamicPwd为什么直接和Person关联?而不是Accout?

Lay
2009-01-09 10:08
感谢banq的回帖,在jdon中学到很多,进步很多。

恩。。我这个登录功能是前端门户的登录,登录门户后,如果该用户有访问比如A系统的权限,并做了单点登录,则可直接访问A系统。

而在A系统中是拿Person的uid跟A系统的账号做对应,而不是Account。

所以我认为认证过程是对Person做认证,虽然实际上是对某个特定的账号做认证。

这样我觉得IPBindPolicy和DynamicPwd还是跟Person关联好一点。

BinnyJ
2009-01-09 14:54
我看lz的模型,很不理解. 为什么会有 Server , Person 这样的对象存在. 为什么会有User这种的角色.以我的理解,根据DDD, 这个登陆验证模块的实体有:

Account (登陆帐号),Prolicy(配置信息),IpAddrConf(ip地址配置).

系统对外提供服务只有 AuthorityService(验证服务). AuthorityService(验证服务)根据Prolicy(配置信息)的信息,判断是否需要进行动态验证码,如果需要就调用SendMegService发送动态码, 如果绑定IP地址,那么就调用IpCheckService.

如果是我来建立模型,我会这样建立.

(注:不过建立这个模型是有点怪,没有四色原型中的Yellow色.)


BinnyJ
2009-01-09 14:59
比较不明白, 这是只是一个登陆验证模块,验证模块的功能验证输入的用户信息,

为什么能分出 Server, Person这两个类, 而两个Role代表什么意思:Authority, User.

还有. DDD提到的 实体,值对象,服务.

Server,Person,Authority,User是属于实体吗?

初学阶段.对这些概念还比较模糊.

猜你喜欢