asp.net forms 身份验证方式下跨域登录信息共享的实现方法

背景:之前我在公司做了一个用户管理后台,是基于 asp.net forms 身份验证的方式实现的。最近有同事提出需将他的管理后台加入到我的管理后台中,避免内容部门的同事因内容管理的需要四处登录。出于某种原因,他的程序又必须放在另外一台机器另外一个站点的某个目录下,开发工具均为 vs2008 。经过一番折腾,终于弄好了。现将过程记录下来以备忘。
下面假设我已做好的站点为 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 获取到 。
完整的配置如下:
ExpandedBlockStart.gif 身份验证配置节
<!--  身份验证配置节  -->
      
< 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 身份验证配置节  -->


转载于:https://www.cnblogs.com/infozero/archive/2010/01/28/1658586.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值