PHP实现Web系统单点登录
随着用户需求的不断扩大,更多的系统被构建。 为了获得更好的用户体验,需要对用户实现单点登录。 所谓单点登录是指用户在一个系统登录后,其他系统不需要再次登录。 单点登录的好处是显而易见的,提高了用户体验。 如何实现单点登录,这里我提供两种解决方案:
1、一级域名相同,通过共享cookie实现
有两个站点a.the.com和b.the.com AB,只要登录站点A或B,两个站点都可以使用,不需要登录另一个站点。 而通过基于cookie的实现方法,前提是两个系统共享一个一级域名,并且必须唯一标识用户。 上述两个网站的一级域名都是the.com,我们只需要将cookie的domain属性设置为the.com即可; 包括标记用户ID,为了安全,还需要对cookie的值进行加密。 当用户访问其他网站时,首先判断是否有cookie,如果有单点登录 php,则揭示cookie,获取用户信息,设置用户登录。
下面是PHP示例代码
function login() //正常登录
......//验证用户的合法性
$_SESSION['uid'] = $user_id;
setcookie('sign', encrypt($pass9), '', '/', 'the.com');
函数符号()
$sign = $_COOKIE['sign'];
if(!empty($sign))
$sign = 解密($sign);
......///着陆成功
这里需要注意的是:添加秘密必须进行安全验证。 但这种方法并不完美,两个网站必须有相同的一级域名; 另外,这些基于cookie的方法不够安全。
2. 使用特殊的登录系统。
所有站点共享一个登录系统; 当用户在其中一个站点登录成功后,系统调用其他站点的登录套接字,完成用户在其他站点的登录,同时设置相应的登录信息。 或者当用户登录时,仅系统保存用户的登录信息。 当用户在其他站点登录时,必须请求系统接口获取用户是否登录的信息。前一种方法的缺点是,无论用户是否使用其他站点,那些站点都需要保存用户状态; 后一种形式将所有压力转移到登录系统。 而如果要实现用户注销的统一操作,则需要站点调用登录系统的注销套接字,然后登录系统套接字调用其他站点的注销套接字; 只要清除该标志即可,其他网站如果发现该标志不存在,就知道该用户已经退出系统。
这种处理方法需要在登录系统和各个站点之间指定一个登录套接字和一个注销套接字。 使用此套接字,站点可以轻松处理用户登录或注销:
函数登录()
$info = callLoginServer(); //访问登录服务器
if(!empty($info)) //登录成功
//用户还没有登录,则登录本系统,调用登录服务器socket
functionlogging() //本系统登录
.....//登陆成功
callSeverLogin();//通知用户登录
以上只是一个简单的逻辑结构,具体的处理还需要针对即将推出的系统进行。
如果您有更好的方法,欢迎一起讨论!
trueTechArticlephp实现Web系统的单点登录随着用户需求的不断扩大单点登录 php,更多的系统被建立起来。 为了获得更好的用户体验,需要对用户实现单点登录。 所谓的单点登录...