我现在有两个asp.net web程序,分别在两个不同的IP地址中:
现在,我想实现两个web程序的一次性登录.我应该怎么做呢?现在我已经实现了在同一个IP地址下不同web程序间的一次性登录,但对于不同IP地址的不同web程序总是做不到.问题应该出现在以下方面:
1. 如果cookie路径设置为"/",则两个不同IP的web程序会产生不同名字的cookie,即无法实现一次性登录了. <forms name="Teny"
loginUrl="http://192.168.0.33/login.aspx"
protection="All"
timeout="30"
path="MyPath" > <!-- Path must have a compatible scope.-->
</forms>
</authentication>我想将两个web程序都设置成Mypath,但我查看生成的cookie.前面都添加了IP地址前缀 ,使得另一个web程序无法得到另一个web程序生成的cookie.
解决方案 »
- 大家做新闻上传附件的思路是什么?求解,求分析!谢谢
- gridview 获得某行的 DropDownList的值
- 基本属于非技术范畴,随便把分散了,放假休息了.
- IIS 在XP HOME版中怎么装不上啊 (新手)。。。
- 急求!
- 在VBscript或者JavaScript中能否判断一个字符串中的中文字和英文字母的数目?
- 免费FTP!!!!~~~~~
- 急:.net安装程序问题
- vs.net2003在win2003上安装必须要系统盘为ntfs格式
- 文本回车换行的显示问题,焦急等待散分中!
- 模态窗体问题
- 有一个用asp.net写的登陆程序,我在win200profession按登陆可以执行,但在win2003下按登陆却没有任何反应?
去掉试一下
Windows身份验证:
<configuration>
<system.web>
<authentication mode = "Windows">
</authentication>
</system.web>
</configuration>
窗体身份验证:
<configuration>
<system.web>
<authentication mode = "Forms">
</authentication>
</system.web>
</configuration>
护照身份验证:
<configuration>
<system.web>
<authentication mode = "Passport">
</authentication>
</system.web>
</configuration>
自定义身份验证:
<configuration>
<system.web>
<authentication mode = "None">
</authentication>
</system.web>
</configuration>
各个独立的.net程序,可能是在不同IP下的。2. 方案(采用Cookie作为信息保存方式):客户端页面需要进行验证时经过如下处理流程:
1. 查看是否存在本客户程序的cookie。如果存在则正常访问,如果不存在,则访问checklogin.aspx页面。并传递本页本URL
2. checklogin.aspx页面中检查是否存在验证中心cookie(此cookie保存在客户端,并加密).如果存在,则说明客户已经登录,则回一个加密字符串,在客户程序中解密得到USERNAME.不存在,则跳转到UserLogin.aspx页面,进行登录验证。
3. 在userlogin.aspx页面中,用户登录后会产生一个保留在客户端一定时间的cookie,此cookie是用户是否已经登录的凭证。全部客户端都是通过查询验证中心的checklogin.aspx页面来查看用户是否登录。(总结: 各个不同IP的客户程序在初次访问时通过访问验证中心的checklogin.aspx页面确认用户是否已经登录,如果已经登录过,则通过之前保留的加密Cookie来得到用户信息,并通过附加QueryString 传递相关信息到客户程序,实现客户程序的自动登录)
补充:这样做可以实现一处登录,各个子程序自动识别的需求,但存在一些缺点
1. 就是验证中心的Cookie不是即时保存在内存中的,而是保存在客户硬盘上一段时间,如前一用户退出后,短时间内另一用户登录,则会自动登录到前一用户的帐号中去。
2. 如果客户在一个客户程序中停留过长时间再次访问另一IP的客户程序时,由于验证中心的Cookie过期,则使得用户需要得新登录。还是有一些不科学。
大家看看是否有更好的方法......(表达不好,又画不了图,将就吧............)
在global.ascx文件的
protected void Application_AuthenticateRequest(Object sender, EventArgs e)
事件中添加对于验证中心的验证页面的访问,如果