概述
单点登陆(SSO-Single Sign On)简而言之就是能够通过认证系统能够使用户在一个系统登陆后就可以在权限允许范围内访问其他的系统而不需要重新登陆,或者保证用户登陆的单一性即用户在同一时间只能有一个登陆状态.

单点登陆有很多种:根据系统的架构可以分为C/S系统的,B/S系统的或者两者混合系统的;根据应用的多少可以分为单应用的和多应用的;根据系统的网络环境还可以分为单域的和跨域的.

这个文章要讨论的是.NET框架下B/S模式单个应用的单点登陆:保证用户登陆的后单一性即后一个用户登陆后前一个用户将会自动退出系统.系统的认证原理:用户信息存储在数据库中.

原理
用户登陆后的信息是存储在Session中(Session的值实际上是存储在server上的),每个Session的SessionID是不同的用户第二次登陆之前检测Session中是否已经有该用户登陆如果有则重写Session中的值,使第一个登陆用户的Session失效从而退出系统.否则直接登陆系统.

实例代码

1.用于存储用户登陆信息的类UserCollection.cs

单点登陆--单web应用的单点登陆    public class UserCollection
    }

2. 添加一个专门用于检测用户状态的页面userstatus.aspx

单点登陆--单web应用的单点登陆protected void Page_Load(object sender, EventArgs e)
    }

3.添加JS文件header.js,使用AJAX的机制来调用userstatus.aspx以检测用户的登陆信息

单点登陆--单web应用的单点登陆var xmlhttp;
单点登陆--单web应用的单点登陆
单点登陆--单web应用的单点登陆function header()
}


4.让系统的webmaster或者类似页面每10检测一次用户的登陆信息

单点登陆--单web应用的单点登陆<script language="JavaScript" src="../JS/header.js"></script>
单点登陆--单web应用的单点登陆
单点登陆--单web应用的单点登陆
<script language="javascript">
单点登陆--单web应用的单点登陆        waitTime
=10000//10 秒
单点登陆--单web应用的单点登陆
        timer=setInterval("header()",waitTime);         
单点登陆--单web应用的单点登陆
</script>

 至此系统可以实现后单点登陆.

相关文章: