清单 4: web配置文件的解密代码
protected void btnDecrypt_Click(object sender, EventArgs e) { try { Configuration config = WebConfigurationManager.OpenWebConfiguration( "/Aspalliance1 "); ConfigurationSection machineKeySection = config.GetSection( "system.web/machineKey"); machineKeySection.SectionInformation.UnprotectSection(); machineKeySection.SectionInformation.ForceSave = true; config.Save(); Response.Write("<h2 style='color:red'>Decryption Succeed</h2>"); } catch (Exception ex) { Response.Write("<h2 style='color:red'>Error while decrypting</h2><br/>"); Response.Write(ex.Message); } }
现在你必须在这个站点中设置相同的配置。首先你需要更改你的窗体验证部分的loginUrl,这个窗体将被用来将匿名用户跳转到”Login.aspx”页。只是,现在它将把用户重定向到Aspalliance1站点中的”Login.aspx”页。
清单 5: 设置 web.config中的验证节
<authentication mode="Forms"> <forms loginUrl="http://localhost/Aspalliance1/login.aspx"name=".ASPXAUTH"/> </authentication>
如果你想实现跨程序登录你的好多站点时,最重要的一点就是你必须把你的两个或更多的站点配置为相同的<machineKey>。所以我只需要拷贝并粘贴Aspalliance1 站点中的<machineKey>配置节到Aspalliance2站点。现在都已经准备好了,你可以测试你的站点了。
清单 6: 设置web.config 中的 machineKey
<machineKey validationKey="282487E295028E59B8F411ACB689CCD6F39DDD21E6055A3EE480424315994760ADF 21B580D8587DB675FA02F79167413044E25309CCCDB647174D5B3D0DD9141" decryptionKey="8B6697227CBCA902B1A0925D40FAA00B353F2DF4359D2099" validation="SHA1"/>
测试这个站点的话,可以使用用户名:Admin密码:123456&来登录。
这个下载附件中有一个VS 2005项目,其中包含有两个站点:aspalliance1 and aspalliance2.
要安装这个实例的话,你需要创建两个IIS虚拟目录命名为:aspalliance1 和 aspalliance2,并将地址指向相应的文件夹。你也可以通过Visual Studio 2005打开站点。
当用户要交叉访问你的多个站点时,他必须重复登陆实在是麻烦。所以,如果只让用户登录一次,那会是非常棒的。实现这些,你只需要给你的"web.config" 文件增加具有相同值的<machineKey>配置。并且处于安全考虑,我建议你加密这个配置节。这个加密方法在SectionInformation类中通过ProtectSection()方法被重写了。
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
- .NET移动与嵌入式技术 (5963篇文章)
- .NET开发手册 (5664篇文章)
- ASP.NET教程 (8457篇文章)
- ASP.NET应用篇 (2638篇文章)
- .NET开发人员犯的6大安全错误 (6次浏览)
- 请跟我来--使用Ext搞个原型 (1次浏览)
- ASP.NET 3.5 Extensions带来什么 (1次浏览)
- 应用WEB标准会使ScrollTop属性失效! (0次浏览)
- Cache用法之缓存页面和缓存数据 (0次浏览)
- 支持正则表达式的UrlMapping (0次浏览)
- 关于ASP.NET 2.0的目录结构变化 (0次浏览)
- WPF中Closing窗体时调用Hide()方法异常 (0次浏览)
- 对象数组根据某属性列的灵活排序 (0次浏览)
- DB2 9和ASP.NET 2.0构建下一代应用程序 (0次浏览)



