thinkphp3.2 单点登录例子
时间: 2024-09-29 08:15:43 浏览: 36
ThinkPHP 3.2 中单点登录(Single Sign-On,简称 SSO)通常涉及以下几个步骤:
1. 用户首次登录:用户访问应用A并输入用户名和密码,系统检查是否成功登录,并生成一个session标识存储在服务器上。
2. 第一次授权:应用A将用户的session信息保存到服务器的一个共享存储(如Redis、数据库等),同时设置过期时间。
3. 二次请求:当用户在未登出的情况下需要进入应用B时,应用B会检查当前session是否存在,并验证该session是否有效。
4. session验证:应用B向应用A发送请求,请求包含用户session的信息。应用A验证后返回确认结果,如果验证通过,应用B允许用户继续访问,否则跳转回登录页面。
5. 登出机制:在任何一个应用中登出都会清除所有关联的应用的session,保证单点登录的安全性。
这里是一个简单的示例代码片段(假设使用了Redis作为共享存储):
```php
// 应用A的登录处理
if (isset($_SESSION['user_id'])) {
// ...验证用户登录...
$redis = new Redis();
$redis->set('sso:'.$_SESSION['user_id'], $_SESSION['user_info'], 60*60); // 设置session到Redis
}
// 应用B的验证处理
if (isset($_GET['token'])) {
$redis = new Redis();
$user_info = $redis->get('sso:'.$_GET['token']);
if ($user_info) {
$_SESSION['user_info'] = $user_info;
// 用户已登录,继续应用B的功能
} else {
// token无效或已过期,提示用户重新登录
}
}
```