|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
也不知道,我同学昨天说数据挖掘很好。asp.net|程序 前年我写过一篇漫笔埋怨Microsoft在ASP.NET架构中Session_End事务上处置,说来内疚,实在昔时我对ASP.NET运转时的庞大性了解不敷。假话说,捕获经由过程身份考证和刊出身份考证对我来讲,意义严重。比方:
在登录前先反省是不是已存在SSO供应器;
登录完成后加载相干的权限,这些加载历程大概与详细使用项目完整有关;
登录停止后关照SSO供应器扫除Cookie内容;
......
今朝的ASP.NET供应的办理计划是在Global.cs中加上FormsAuthentication_OnAuthenticated办法来捕获已经由过程考证事务。该办法的缺点是:
1.只能捕获Forms身份考证体例,而不克不及捕获Windows和Passport认证体例;
2.只能捕获已经由过程身份考证事务而不克不及捕获身份刊出事务;
3.必需修正global.cs文件。
以上任何一个缺点都是我没法承受的。事先在ASP.NET1.1办理谁人成绩时用了五六个接口,十多个类,而且有一个输入类请求使用程序登进和刊出时会见响应的办法,而不是自在地利用FormsAuthentication的相干办法。现现在该成绩总算对照中意地办理了。思绪是如许的:
在一个HttpModule中创建两张会话表,一张纪录已经由过程身份考证的会话;另外一张纪录未经由过程身份考证的会话,如许,在HttpApplication.AcquireRequestState事务中查找每一个会话在这两张表中的形态:
形态一两张表中都没有这是一个新的会话
形态二在已经由过程身份考证的会话表中已经由过程身份考证
形态三在未经由过程身份考证的会话表中未经由过程身份考证
假如是形态一,则当即挪用一切SSO供应器的身份检验办法,只需有任何一个SSO供应器证明已经由过程了身份考证,则当即将形态调剂到形态二,并关照一切定阅身份形态变更的Handler。假如是形态二或形态三,则当即预会话的实践身份形态举行比对。会话实践的身份形态能够经由过程查询HttpContext.User来取得。假如两者分歧,则依据情形调剂表中所纪录的形态,并向定阅身份变更的Handler收回响应的关照。
有一个成绩是:会话列表的查询频度十分高,每次Request都不成制止查询一次。以是这里对算法的选择请求较高。我在实践的项目当选择了字符串数组的BinarySearch算法。如许每次增加或删除新的会话时不成制止对字符串在数组中的地位举行调剂,以坚持排序形态。固然,在比对过程当中也必要依据射中率调剂比对按次,比方三种形态中,明显形态二的比例最高(固然数组常常也最复杂),应当优先选择。
最初的办理计划是:只用了三个接口,一个HttpModule和几个外部类就完成了,完整不用修正global.cs,且没有任何输入类供登录认证模块挪用,一切的SSO供应器也只必要经由过程web.config来设置,对营业层是完整通明的。这三个接口是:一个设置参数高低文接口、一个SSO供应器接口(同时兼做捕获身份形态变更的Handler接口)、一个Handler接口的工场接口(以坚持Handler接口的机关器自在和决意是不是创建Handler接口的完成类实例)。
是不是实质都是API?有的好像不只是API那么简单的,有的也是一种框架就像MFC一样。有的还是一种思想(就是做软件的思想)(好像很深奥,其实我也不懂^_^) |
|