问题描述
跨域网站实现了单点登录,但各网站的每个页面继承验证类,导致页面加载时刷新两次各网站加载较慢单点登录原理是各网站的用户凭证保存到验证服务器的cache中请问有什么异步方法不让每个页面都刷新一次谢谢
解决方案
解决方案二:
每个页面都访问单点登录系统?什么情况?你的网站,如果没有登录信息,才需要访问单点登录网页。而如果已经登陆过,你的网页该干什么还干什么。从单点登录网页重定向回到当前网站页面之后,当前网站应该从单点登录网站(根据传来的url参数)把用户的信息取过来保存,以后在打开别的页面时就不需要再访问单点登录系统了。
解决方案三:
引用楼主gzbhappy的回复:
单点登录原理是各网站的用户凭证保存到验证服务器的cache中
这只说了一半,是不对的。单点登录的原理是保证各个网站不可能拿到用户的登录密码。至于可以对网站开放的用户凭证信息(不含登录密码),则应该让网站来取。
解决方案四:
比如说一个人每天要上7、8个网站输入密码去分别登录,现在他就可以用一个账号来登录这些网站,就好像许多软件都支持“用QQ号登录”一样。只是去掉各网站不同的登录行为,而不是屏蔽用户信息。如果只是局限于“各网站的用户凭证保存到验证服务器的cache中”,那么你的各个业务网站没用户信息还能提供什么服务啊?
解决方案五:
首次加载刷新两次就忍了吧,如果每个页面都要刷两次,那就是设计问题了.
解决方案六:
按照2楼3楼4意思我试了一下这个继承类导向验证服务端验证服务端再导向客户端验证服务端的导向客户端的代码如下:protectedvoidPage_Load(objectsender,EventArgse){if(Request.QueryString["BackURL"]!=null){stringbackURL=Server.UrlDecode(Request.QueryString["BackURL"]);stringsessionid=Server.UrlDecode(Request.QueryString["SessionID"]);//获取CookieHttpCookietokenCookie=Request.Cookies["Token2"];Uriuri=newUri(backURL);stringurl=null;if(tokenCookie!=null){stringtoken=Request.Cookies["Token2"].Value;TokenServicetokenService=newTokenService();objectvalue=tokenService.TokenGetCredence(token,url,sessionid);url="http://"+uri.Authority+"/SaveToken.ashx?Token="+token+"&TokenValue="+value.ToString();//url="http://"+uri.Authority+"/SaveToken.ashx?Token="+Request.Cookies["Token2"].Value;}else{url="http://"+uri.Authority+"/SaveToken.ashx?Token=$Token$&TokenValue=$Value$";}Response.Redirect(url);}}
虽然如果已经登录了可以把用户登录凭证传到客户端但是如果不刷新客户端页面的前提下用户的登录凭证还是没有加载到客户端页面?问题二:asp.net页面中能不能有个全局的来继承这个到验证服务器去验证用户的是否已经登录的类?
解决方案七:
有人处理过这样的问题吗
解决方案八:
Response.Redirect()是重定向必定2次你该用server.transferrequest
解决方案九:
楼主你给出的代码是使用response.redirect方法,还是会验证两次的,这是避免不了的,如果不想改变凭证的存储方式的话,试试使用httpwebrequest类向验证服务器发请求吧
解决方案十:
验证两次=》刷新两次
解决方案十一:
引用7楼uinatlex的回复:
Response.Redirect()是重定向必定2次你该用server.transferrequest
server.transferrequest好像只能在本域内使用啊
解决方案十二:
引用5楼gzbhappy的回复:
虽然如果已经登录了可以把用户登录凭证传到客户端但是如果不刷新客户端页面的前提下用户的登录凭证还是没有加载到客户端页面?问题二:asp.net页面中能不能有个全局的来继承这个到验证服务器去验证用户的是否已经登录的类?
客户端在登录时当然要重定向到验证服务网站,而登录之后当然还好重定向到客户端业务主页。只不过是,客户端只需要在登录时做一次,以后的所有页面都跟登录验证服务网站无关了。而不是“网站的每个页面”都要这样做。谁说过连登录功能(这一次操作)都不刷新页面啊?!
解决方案十三:
说来说去,你还是没有在最核心的流程上作出必要的改变。不是什么“这个继承类导向验证服务端”,根本不是每一个页面都去做这个操作,因此也就谈不上什么“继承类”。只有你的登录功能需要做一次这个操作啊!
解决方案十四:
引用12楼sp1234的回复:
说来说去,你还是没有在最核心的流程上作出必要的改变。不是什么“这个继承类导向验证服务端”,根本不是每一个页面都去做这个操作,因此也就谈不上什么“继承类”。只有你的登录功能需要做一次这个操作啊!
可能楼上误解我的意思了假如A和B是客户端S是验证服务端第一种情况如果当前A登录了打开同一浏览器在地址框中写入B的地址此时B得向S来回取值写值也就是说打开B的时候得多刷新一遍第二种情况如果A登录了在A中链接打开B的新闻详细页面打开新闻详细页面后B也同时登录