ASP.NET网站制作之在ASP.NET使用程序中捕获身份考证形态的...
也不知道,我同学昨天说数据挖掘很好。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一样。有的还是一种思想(就是做软件的思想)(好像很深奥,其实我也不懂^_^) 但是目前在CGI中使用的最为广泛的是Perl语言。所以,狭义上所指的CGI程序一般都是指Perl程序,一般CGI程序的后缀都是.pl或者.cgi。 当然我们在选择Asp.net主机是,除了要考虑服务提供商在版本是否是实时更新以外,机房的环境和配置也是非常重要的,通常选择骨干网的机房,在速度和稳定性上会非常有保证。 在一个项目中谁敢保证每天几千万甚至几亿条的数据不丢失?谁敢保证应用的高可靠性?有可以借签的项目吗? 大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。 Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的东西。 通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。 是目前ASP在UNIX/Linux上的应用可以说几乎为0)。所以平台的局限性和ASP自身的安全性限制了ASP的广泛应用。 主流网站开发语言之JSP:JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java2platformEnterpriseEdition)应用体系中的一部分。
页:
[1]