【发布时间】:2014-02-11 05:27:54
【问题描述】:
我过去曾问过关于单点登录 (SSO) 的类似问题,但我意识到这仅适用于子域,但在我的情况下,我没有使用子域,而只是在同一个上使用不同的 Yii 应用程序一个域下的服务器。
我有 www.mydomain.com/app1 和 www.mydomain.com/app2
两个应用程序使用相同的数据库并使用相同的表进行登录。
我想要发生的事情:
两个应用程序的帐户相同
- 用户登录 app2(或 app1。没关系)
- 用户已登录并被定向到主页。
- 用户点击菜单中的链接,将他们重定向到 app2(或 app1,如果他们来自 app2)
- 用户被重定向到 app2 并跳过登录,因为他们已经登录并被重定向到帐户的主页。
- 用户单击菜单中的注销链接。
- 用户已从两个应用程序中注销。
没有发生什么
(4)。用户被重定向到 app1,但仍提示登录。
然后我查看了 app1 和 app2 中的 cookie 和会话,并在 config 文件夹中对 main.php 执行了以下操作:
// application components
'components'=>array(
'user'=>array(
// enable cookie-based authentication
'allowAutoLogin'=>true,
'class'=>'WebUser',
),
'session'=> array(
'timeout'=> 1440
),
'partyroles'=>array(
// enable cookie-based authentication
'class'=>'WebUser',
),
// uncomment the following to enable URLs in path-format
'urlManager'=>array(
'urlFormat'=>'path',
'rules'=>array(
'<controller:\w+>/<id:\d+>'=>'<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
),
),
我整周都在纠结这个问题,由于截止日期即将到来,我认为是时候寻求一些必要的帮助了!
编辑 这是我使用 CDbHttpSession 启动会话的配置文件 main.php。我现在将会话存储到名为 YiiSession 的数据库表中:
'sessionName'=>'app',
'class'=>'CDbHttpSession',
'autoCreateSessionTable'=> false,
'connectionID'=>'db',
'sessionTableName'=>'YiiSession',
'useTransParentSessionID' =>($_POST['PHPSESSID']) ? true: false,
'autoStart' => 'false',
'cookieMode' => 'only',
'timeout'=> 300
),
现在可以登录,并且会话正在存储到数据库中,但它仍然没有登录到这两个应用程序。两个应用程序具有相同的配置。
【问题讨论】: