ASP.NET如何进行单点登录(注意:两个网站域名不同,且服务器也不相同)
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/域名它不认了
0条评论