跨域网站实现了单点登录,但各网站的每个页面继承验证类,导致页面加载时 刷新两次

问题描述

跨域网站实现了单点登录,但各网站的每个页面继承验证类,导致页面加载时刷新两次各网站加载较慢单点登录原理是各网站的用户凭证保存到验证服务器的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也同时登录

时间: 2024-08-04 03:09:50

跨域网站实现了单点登录,但各网站的每个页面继承验证类,导致页面加载时 刷新两次的相关文章

用户登录,跳转另一网站,怎么自动登录另一网站,已知用户名和密码

问题描述 对接用户登录,跳转另一网站,怎么自动登录另一网站,已知用户名和密码 解决方案 解决方案二:http://bbs.csdn.net/topics/340186967解决方案三:我想要对接别的网站,我知道了用户名和密码然后直接从我网站登录到别的网站解决方案四:看对方网站登陆页面的要求PSOT或者GET提交用户名和密码解决方案五:引用3楼caoqinghua的回复: 看对方网站登陆页面的要求PSOT或者GET提交用户名和密码 正解解决方案六:引用4楼liqz2009的回复: Quote: 引

详解可跨域的单点登录(SSO)实现方案【附.net代码】_实用技巧

SSO简介 定义: 传统的单站点登录访问授权机制是:登录成功后将用户信息保存在session中,sessionId保存在cookie中,每次访问需要登录访问的资源(url)时判断当前session是否为空,为空的话跳转到登录界面登录,不为空的话允许访问.  单点登录是一种多站点共享登录访问授权机制,访问用户只需要在一个站点登录就可以访问其它站点需要登录访问的资源(url).用户在任意一个站点注销登录,则其它站点的登录状态也被注销.简而言之就是:一处登录,处处登录.一处注销,处处注销. 应用场景:

Ajax跨域请求 JSON JSONP

同源策略和跨域-总结 目录: 1.同源策略 2.跨域 3.几种跨域技术   1.同源策略 什么叫同源? URL由协议.域名.端口和路径组成,如果两个URL的协议.域名和端口相同,则表示他们同源.相反,只要协议,域名,端口有任何一个的不同,就被当作是跨域. e.g. 对于http://store.company.com/dir/page.html进行同源检测: URL 结果 原因 http://store.company.com/dir2/other.html 成功 仅路径不同 http://st

sso跨域写cookie的一段js脚本(推荐)_javascript技巧

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script> var setcookitarray = ""; setcookitarray = "[\"http://passport.a.com/main/setCookie.do?domain=\",\"http://passport.

SSO单点登录的实现原理是怎样的

单点登录在现在的系统架构中广泛存在,他将多个子系统的认证体系打通,实现了一个入口多处使用,而在架构单点登录时,也会遇到一些小问题,在不同的应用环境中可以采用不同的单点登录实现方案来满足需求.我将以我所遇到的应用环境以及在其中所经历的各个阶段与大家分享,若有不足,希望各位不吝赐教. 当用户第一次访问系统1的时候,因为还没有登录,会被引导到认证系统中进行登录,根据用户提供的登录信息,认证系统进行身份检验,如果通过检验,就会返回给用户一个凭据--ticket:然而当用户访问别的应用的时候,就会讲tic

JavaScript跨域总结与解决办法

什么是跨域 JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象.但在安全限制的同时也给注入iframe或是ajax应用上带来了不少麻烦.这里把涉及到跨域的一些问题简单地整理一下: 首先什么是跨域,简单地理解就是因为JavaScript同源策略的限制,a.com 域名下的js无法操作b.com或是c.a.com域名下的对象.更详细的说明可以看下表: 特别注意两点: 第一,如果是协议和端口造成的跨域问题"前台"是无能为力的, 第二:在跨域问题上,域仅仅是通过"U

ASP.NET MVC中EasyUI的datagrid跨域调用实现代码_jquery

最近项目中需要跨域调用其他项目的数据,其他项目也是使用的EasyUI的datagrid组件,开始以为直接在datagrid的url属性定义为其他项目的url地址即可,可是测试下发现的确是返回了json数据但是json数据提示"invalid label" 错误,网上搜索了下错误解决办法,参考 "JavaScript处理Json的invalid label错误解决办法"的方法利用datagrid的loadData方法加载并转换了json还是提示上述错误,感觉原因不在格

总结JavaScript跨域的问题及解决办法

什么是跨域 JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象.但在安全限制的同时也给注入iframe或是ajax应用上带来了不少麻烦.这里把涉及到跨域的一些问题简单地整理一下: 首先什么是跨域,简单地理解就是因为JavaScript同源策略的限制,a.com 域名下的js无法操作b.com或是c.a.com域名下的对象.更详细的说明可以看下表: URL                           说明         是否允许通信 http://www.a.com/a

单点登录的三种实现方式

单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任.单点登录在大型网站里使用得非常频繁,例如像阿里巴巴这样的网站,在网站的背后是成百上千的子系统,用户一次操作或交易可能涉及到几十个子系统的协作,如果每个子系统都需要用户认证,不仅用户会疯掉,各子系统也会为这种重复认证授权的逻辑搞疯掉.实现单点登录说到底就是要解决如何产生和存储那个信任,再就是其他系统如何验证这个信任的有效性,因