下面假设我已做好的站点为 A(http://a.abc.com),同事要加入的站点为 B 站(http://b.abc.com/)的虚拟目录 xxx 。方法是配置 A, B 站的 web.config .
1.配置 system.web/machineKey 节点。务必保持2个站点的此节点完全一致; 可参见: http://www.aspnetresources.com/tools/keycreator.aspx 生成
2.2个 web.config 都配置为 forms 验证方式( system.web/authentication 节);
3.2个 web.config 节都配置 system.web/httpCookies 为 <httpCookies domain=".abc.com"/> ;我认为这是很关键的一步,开始配置没有成功,在网上找了相关资料都没有详细说明这个,在实际使用中却不能生效。后来我用 firefox 的 HttpFox 插件前后查看,仔细对比,原来在 A 站点登录的地方通过配置后会生成两个名称相同但所属于的域名不同的 cookie , 一个是默认站点 a.abc.com ,另一个是配置的 .abc.com ; B 站点就通过配置的域名 cookie 获取到 。
完整的配置如下:
身份验证配置节
<!--
身份验证配置节
-->
< authentication mode ="Forms" >
< forms loginUrl ="~/default.aspx" defaultUrl ="~/mainIndex.aspx" name =".mymanage"
protection ="All" domain =".abc.com"
path ="/" slidingExpiration ="true" timeout ="60" ></ forms >
</ authentication >
< machineKey
validationKey ="EF936296B4B062FFD6B7074C0501D7CCEFB50C19A75613AEEC603B4EF5F42AEDC463FDE81707795DDAA5FD4AA0D88CC30E9D413699A7E814358876FC9E75B883"
decryptionKey ="948F668DFEEC39CB8BF07E222BFEED5C5B5B9FF427E0F92976534EE8D517F325"
validation ="SHA1"
decryption ="AES"
/>
< authorization >
< deny users ="?" />
</ authorization >
< httpCookies domain =".abc.com" />
<!-- End 身份验证配置节 -->
< authentication mode ="Forms" >
< forms loginUrl ="~/default.aspx" defaultUrl ="~/mainIndex.aspx" name =".mymanage"
protection ="All" domain =".abc.com"
path ="/" slidingExpiration ="true" timeout ="60" ></ forms >
</ authentication >
< machineKey
validationKey ="EF936296B4B062FFD6B7074C0501D7CCEFB50C19A75613AEEC603B4EF5F42AEDC463FDE81707795DDAA5FD4AA0D88CC30E9D413699A7E814358876FC9E75B883"
decryptionKey ="948F668DFEEC39CB8BF07E222BFEED5C5B5B9FF427E0F92976534EE8D517F325"
validation ="SHA1"
decryption ="AES"
/>
< authorization >
< deny users ="?" />
</ authorization >
< httpCookies domain =".abc.com" />
<!-- End 身份验证配置节 -->