ASP.NET如何进行单点登录(注意:两个网站域名不同,且服务器也不相同)

ASP.NET如何进行单点登录(注意:两个网站域名不同,且服务器也不相同),第1张

ASPNET单点登录(代码)-转2008-09-02 11:44由于某些原因,在我们的应用中会遇到一个用户只能在一个地方登录的情况,也就是我们通常所说的单点登录。在ASPNET中实现单点登录其实很简单,下面就把主要的方法和全部代码进行分析。

实现思路

利用Cache的功能,我们把用户的登录信息保存在Cache中,并设置过期时间为Session失效的时间,因此,一旦Session失效,我们的Cache也过期;而Cache对所有的用户都可以访问,因此,用它保存用户信息比数据库来得方便。

代码 string sKey = usernameTextToString()Trim(); // 得到Cache中的给定Key的值

string sUser = ConvertToString(Cache[sKey]); // 检查是否存在

if (sUser == null || sUser == StringEmpty)

{

TimeSpan SessTimeOut = new TimeSpan(0, 0, SystemWebHttpContextCurrentSessionTimeout, 0, 0);//取得Session的过期时间

HttpContextCurrentCacheInsert(sKey, sKey, null, DateTimeMaxValue, SessTimeOut, SystemWebCachingCacheItemPriorityNotRemovable, null);//将值放入cache己方便单点登录

//成功登录

}

else if (Cache[sKey]ToString() == sKey)//如果这个账号已经登录

{

ClientScriptRegisterStartupScript(GetType(), "提示", "<script>alert('对不起,当前用户已经登录');</script>");

return;

}

else

{

SessionAbandon();//这段主要是为了避免不必要的错误导致不能登录

}

我也遇到了这个问题,现在解决了。原因如下:

sso server(IP地址10261010)我配了一个域名叫 testserver

然后在sso client(IP地址1026139)那一侧的hosts文件里面定义了两者之间的映射:

10261010 testserver

结果报错跟你一样:

javaioFileNotFoundException: https://testserver:8443/cas/serviceValidateticket=ST-3-vG0zkXu5iwV5SgP0VXqX-cas&service=https%3A%2F%2F1026139%3A8443%2Fwbconsole%2FTestjsp%3Bjsessionid%3DEF6FD77467795B4BE195948038858210

后来我怀疑就是sso client 不认 sso server的域名所致

果然,我的sso client的机器名也叫 testserver

感觉像是"testserver"这个名称对应的ip地址就混乱了

我把sso client的机器名称改了调通了。

希望对你的问题有参考价值。你的问题,要么是地址里面sso server 的ip/域名出问题了,要么是sso client的ip/域名它不认了

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » ASP.NET如何进行单点登录(注意:两个网站域名不同,且服务器也不相同)

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情