您的位置:首页 > 编程语言 > ASP

ASP.NET跨应用程序进行登录的解决

2006-04-26 09:26 295 查看
最近一个朋友问我一个问题:

如何可以将ASPdotNET Forum2.0放到他的一个项目中(好象网上也有人讨论过如何将dotText和ASPdotNET Forum等开源项目集成起来的),他原来的项目已经有一套用户登录机制了,而且用户数据库也是现成的,如何使得在他原来系统上登录后就可以直接转到Forum上,而又不需要再次输入用户信息呢?刚开始感觉a piece of cake <authentication mode="Forms">
<forms name=".AspNetForums" protection="Encryption" timeout="60" loginUrl="test1.aspx" />

< SPAN>authentication>

testLogon2的Web.config对应部分

<authentication mode="Forms">
<forms name=".AspNetForums" protection="Encryption" timeout="60" loginUrl="\testLogon\test1.aspx" />
< SPAN>authentication>

2.的增加是必须的
为保证两边两边应用对cookie的处理和读取一致,这个属性是必须的,且要相同

<machineKey
validationKey= "C50B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3400267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE"
decryptionKey= "8A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F"
validation="SHA1">
< SPAN>machineKey>

3.MSDN虽然要查,但不可以完全依靠,特别是代码
在MSDN中,关于machineKey的代码如下:

<configuration>
<system.web>
<authentication>
<forms name=".ASPXAUTH"
loginUrl="logon.aspx"
protection="all" PAN>>
???????????????????timeout="30"?
???????????????????path="/"?>???PAN>?Path?must?have?a?compatible?scope.-->
< SPAN>authentication>

PAN>?Validation?and?decryption?keys?must?exactly?match?and?cannot
?????????????be?set?to?"AutoGenerate".?The?validation?algorithm?must?also?
?????????????be?the?same.?-->
<machineKey>
validationKey= "C50B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3400267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE"
decryptionKey= "8A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F"
validation="SHA1"
isolateApplications="false"
< SPAN>machineKey>
< SPAN>system.web>
< SPAN>configuration>

但显然有着错误的,大家编译一下就知道了,格式错了,而且isolateApplication也不是这样用的

4.为保证两边读到的cookie一致,不要用isolateApplication,它使得各自用自己的cookie了。

5.关于Global.asax的注意,对于Web.config中authentication的节点会触发Global.asax中的事件的,对应

函数是

protected void Application_AuthenticateRequest(Object sender, EventArgs e)

6.研究一下ASPdotNetForum2.0代码发现,Global.asax不见了,而在它的配置文件中多了一项

<httpModules>
<add name="AspNetForums" type="AspNetForums.ForumsHttpModule, AspNetForums.Components" />
< SPAN>httpModules>

是的,看一下ForumsHttpModule的源码,结构和Global.asax基本一样,一样有个事件触发函数

private void Application_AuthenticateRequest(Object source, EventArgs e)

下面不用我多说了吧?具体该如何做到和dotNetForum一起达到SSO的目标的答案已经出来了


例子代码下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: