两个系统的form验证 登录一个系统 另一个居然变成相同的用户了

问题描述

HttpCookieauthCookie=FormsAuthentication.GetAuthCookie(userName,false);//得到ticket凭据FormsAuthenticationTicketticket=FormsAuthentication.Decrypt(authCookie.Value);//根据之前的ticket凭据创建新ticket凭据,然后加入自定义信息FormsAuthenticationTicketnewTicket=newFormsAuthenticationTicket(ticket.Version,ticket.Name,ticket.IssueDate,ticket.Expiration,ticket.IsPersistent,userData);stringstr=System.Web.Security.FormsAuthentication.Encrypt(newTicket);//加密身份验票//将新的Ticke转变为Cookie值,然后添加到Cookies集合中authCookie.Value=FormsAuthentication.Encrypt(newTicket);HttpContext.Current.Response.Cookies.Add(authCookie);System.Web.HttpCookieck=newHttpCookie(System.Web.Security.FormsAuthentication.FormsCookieName,str);//获得来到登录页之前的页面,即url中return参数的值stringurl=FormsAuthentication.GetRedirectUrl(userName,true);Response.Redirect(url);

用这种方法存储cookieFormsIdentityidentity=User.IdentityasFormsIdentity;if(identity==null){return;}userName=identity.Name;

两个系统的用户居然串起来用了怎么解决啊

解决方案

解决方案二:
哪里来的两个系统,没看出来
解决方案三:
同域名?同服务器?或者同session服务器?
解决方案四:
引用2楼starfd的回复:

同域名?同服务器?或者同session服务器?

同一个服务器两个系统都是用的这种方法保存的cookieFormsIdentityidentity=User.IdentityasFormsIdentity;if(identity==null){return;}userName=identity.Name;

这段代码是获取登录后的用户名两个系统都一样了
解决方案五:
更换一下登录顺序,看看是不是总是显示后来登录的登录名(值被覆盖),如果是的话,可能就是你这种取值方式的底层实现是用的static变量存储;而如果一直是第一个(后来值更改无效),那就看是不是逻辑或环境有问题
解决方案六:
引用4楼jingshaohui的回复:

更换一下登录顺序,看看是不是总是显示后来登录的登录名(值被覆盖),如果是的话,可能就是你这种取值方式的底层实现是用的static变量存储;而如果一直是第一个(后来值更改无效),那就看是不是逻辑或环境有问题

总是显示后来登录的登录名(值被覆盖),但是我的值不是static变量存储FormsIdentityidentity=User.IdentityasFormsIdentity;stringuserName=identity.Name;

这个你们都没有用过吗
解决方案七:
@starfd大神还在吗
解决方案八:
form安全验证不是很熟悉大神在哪里啊
解决方案九:
引用5楼ww535175584的回复:

Quote: 引用4楼jingshaohui的回复:
更换一下登录顺序,看看是不是总是显示后来登录的登录名(值被覆盖),如果是的话,可能就是你这种取值方式的底层实现是用的static变量存储;而如果一直是第一个(后来值更改无效),那就看是不是逻辑或环境有问题

总是显示后来登录的登录名(值被覆盖),但是我的值不是static变量存储FormsIdentityidentity=User.IdentityasFormsIdentity;stringuserName=identity.Name;

这个你们都没有用过吗

那我就没脾气了,你说的情况我只在B/S下用static时遇到过
解决方案十:
引用8楼jingshaohui的回复:

Quote: 引用5楼ww535175584的回复:
Quote: 引用4楼jingshaohui的回复:
更换一下登录顺序,看看是不是总是显示后来登录的登录名(值被覆盖),如果是的话,可能就是你这种取值方式的底层实现是用的static变量存储;而如果一直是第一个(后来值更改无效),那就看是不是逻辑或环境有问题

总是显示后来登录的登录名(值被覆盖),但是我的值不是static变量存储FormsIdentityidentity=User.IdentityasFormsIdentity;stringuserName=identity.Name;

这个你们都没有用过吗

那我就没脾气了,你说的情况我只在B/S下用static时遇到过

唉难道我后台和前台不能都用form安全认证吗
解决方案十一:
你断点跟踪,看看生成的sessionid。
解决方案十二:
引用9楼ww535175584的回复:

Quote: 引用8楼jingshaohui的回复:
Quote: 引用5楼ww535175584的回复:
Quote: 引用4楼jingshaohui的回复:
更换一下登录顺序,看看是不是总是显示后来登录的登录名(值被覆盖),如果是的话,可能就是你这种取值方式的底层实现是用的static变量存储;而如果一直是第一个(后来值更改无效),那就看是不是逻辑或环境有问题

总是显示后来登录的登录名(值被覆盖),但是我的值不是static变量存储FormsIdentityidentity=User.IdentityasFormsIdentity;stringuserName=identity.Name;

这个你们都没有用过吗

那我就没脾气了,你说的情况我只在B/S下用static时遇到过

唉难道我后台和前台不能都用form安全认证吗

http://referencesource.microsoft.com/你用这个看看FormsIdentity底层源码吧,也许会有帮助
解决方案十三:
两个web.config文件中的这个名称别用相同的
解决方案十四:

解决方案十五:
应该是cookies的名称相同问题导致的。

时间: 2024-09-20 12:44:42

两个系统的form验证 登录一个系统 另一个居然变成相同的用户了的相关文章

ASP.NET教程:form验证用户登录的Cookie

做用户登录,我一直用form验证的方式.有时候,为了节省时间,用户希望用户名输入框能够记住用户名,省得下次重新输入.这个时候光用form验证是不行的,因为form验证的话,用户一退出系统就失效了,所以需要借助于Cookie. 本以为做这个会很轻松,谁知花了不少时间也没有成功.虽然检验用户名和密码都是正确的,但系统总是拒绝登录,然后返回到登录页面.登录页面的用户名输入框记是记住用户名了,但用户名是乱码的. 真是郁闷至极!一度以为系统发生了错乱,重启机器也还是无济于事.经反复检查和测试发现,如果在f

cooike 与Form验证的关系

问题描述 Form验证会向客户端写一个cookie,客户端再访问页面的时候会把cookie一起发送.有几个问题不明白1,服务器端收到cookie是怎么解析的?解析的时间,解析后的内容是什么.如果没有解析这一过程,服务器是如何知道客户端已经经过验证了?IsAuthenticated是怎么决定的2,服务器端是什么时候向客户端写cookie的?在登陆成功的时候向客户端写,对登陆成功后的请求,服务器应答的时候会写吗?假设不写,那么当把cookie过期时间设置很短,会不会发生几乎每次访问都需要重新登陆,让

httpcontext-在IIS 7同一站点下发布两个应用程序,出现登录验证干扰!急!!!

问题描述 在IIS 7同一站点下发布两个应用程序,出现登录验证干扰!急!!! 在IIS7的default web site下新建了两个application,以A和B为例.然后在浏览器先登录A应用,再在另一个标签页登录B应用.这时返回到A应用的标签操作,会发现A应用程序退出!重新登录之后,去B应用的标签页操作,发现相同现象!简单说就是两个应用不能同时登录,登录A,B退出:登录B,A退出!是不是所有的application用的是同一个HttpContext?我用的是HttpContext.Curr

绑定电脑-想实现一个功能,用户只能通过一台特定的电脑登录上系统

问题描述 想实现一个功能,用户只能通过一台特定的电脑登录上系统 就是用户的登录帐号和个人电脑绑定,只能在那一台电脑上登录,请教一下有什么办法 网站系统是jsp的 解决方案 在网页上加个activex插件,获取mac地址或者cpu.硬盘串号,并结合用户帐号到后端验证即可,验证过程中为了防止伪造,可以加个密钥并结合md5加密一下. 解决方案二: 数据库记录第一次登陆的mac地址,然后通过获取mac地址跟数据库匹配吧 解决方案三: 同意楼上看法, 这个就像软件注册一样,只有这一台电脑通过注册了,才能登

求一个正则表达式验证登录账号密码格式的~~多谢啦~~~~~~~~~~~~~~~~~

问题描述 求一个正则表达式验证登录账号密码格式的~~多谢啦~~~~~~~~~~~~~~~~~ 用户.管理员.特殊账号设置密码必须强制符合以下要求:1. 不能包含用户名2. 密码内容必须包含以下元素中的3种:? 英文大写字母(A -- Z)? 英文小写字母 (a -- z)? 数字r (0 -- 9)? 特殊字符 多谢啦~~我参考别人写的,满足不了上面的需求,,谢谢啦~^(?![a-zA-Z0-9]+$)(?![^a-zA-Z/D]+$)(?![^0-9/D]+$).{820}$ 解决方案 (?=

C++开发系统开发的火车票订票系统里,管理员登录,用户登录是一个窗口的么?

问题描述 C++开发系统开发的火车票订票系统里,管理员登录,用户登录是一个窗口的么? C++开发系统开发的火车票订票系统里,管理员登录,用户登录是一个窗口的么? 解决方案 一个窗口足够了,不同的角色在你的后台判断,并且开放对应的功能. 解决方案二: 这个是自己设计的,想怎么样就怎么样. 解决方案三: 一个页面重复使用,只是换了不同请求ULR,

前两天刚做完一个系统不小心被人弄的,窗体和代码都查看不了了

问题描述 前两天刚做完一个系统不小心被人弄的,窗体和代码都查看不了了,都是乱码?还能还原过来吗?就那一个备份.请指教 解决方案 解决方案二:系统还能运行.解决方案三:重新修改吧!以后多弄几个备份!灾难呀灾难!

网站下建一个应用程序 ,网站是form验证的,可是网站验证通过下面的应用程序没验证

问题描述 网站下建一个应用程序,网站是form验证的,可是网站验证通过下面的应用程序没验证iis是7.5结构是这样的网站的wenconfig<authenticationmode="Forms"><formsloginUrl="Login.aspx"timeout="180"/></authentication>应用程序的没加 解决方案 解决方案二:应用程序池是不是用的同一个解决方案三:没遇到过,帮顶下

100分exchange 2007用post方法来验证登录怎么不行?

问题描述 我现在要和exchange做集成,希望在登录一个系统的同时能验证exchange邮箱,这两个系统用户名和密码都相同.我写了一下代码,在提交当前系统的FORM的时候同时运行如下的函数,但是点邮件的链接总是还是需要登录,请高手看看哪里出问题了functionloginOWA(){sender=null;if(window.XMLHttpRequest){//codeforFirefox,Opera,IE7,etc.sender=newXMLHttpRequest();}elseif(win