我已經問過關於單點登錄(SSO)過去的類似問題,但我意識到這隻適用於子域名,但在我的情況下,我沒有使用子域名,而是在同一臺服務器上使用不同的Yii應用程序在一個域名下。如何從同一臺服務器上的兩個Yii應用驗證用戶?
我有www.mydomain.com/app1和www.mydomain.com/app2
兩個應用程序都使用同一個數據庫,並使用相同的表格進行記錄。
我想會發生什麼:
帳戶是兩個應用程序
- 用戶相同登錄到app2(或app1。沒關係)
- 用戶已登錄並被導向主頁。
- 用戶單擊重定向他們APP2菜單中的鏈接(或APP1如果他們從APP 2來)
- 用戶被重定向到APP 2和,因爲他們已經簽署,並重定向到該帳戶的主頁跳過登錄。
- 用戶從菜單中單擊註銷鏈接。
- 用戶從兩個應用程序中註銷。
什麼是不會發生
(4)。用戶被重定向到APP1,但仍提示您登錄
我接下來,檢查餅乾和會議APP1 & APP 2和兩個main.php在config文件夾中,我做了以下內容:
// 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>',
),
),
我一直堅持這一整個星期,由於截止日期即將到來,我認爲是時候得到一些必要的幫助!
編輯 這是我的配置文件main.php啓動會話使用CDbHttpSession。現在我保存會話到名爲YiiSession數據庫表:
'sessionName'=>'app',
'class'=>'CDbHttpSession',
'autoCreateSessionTable'=> false,
'connectionID'=>'db',
'sessionTableName'=>'YiiSession',
'useTransParentSessionID' =>($_POST['PHPSESSID']) ? true: false,
'autoStart' => 'false',
'cookieMode' => 'only',
'timeout'=> 300
),
記錄在現在的工作和會議被存儲到數據庫中,但它仍然無法登錄到兩個應用程序。兩個應用程序都具有相同的配置
我總是讀到它放置在最高水平。有什麼理由爲什麼?我很好奇配置。看起來好像有一個層次結構來配置你的配置,但我想知道爲什麼! :) 此外, 'ID' 可以是任何東西,對不對? –
我還補充說,你送我的代碼行添加到我的配置上,它甚至不運行我的應用程序。 –
那麼配置是在應用程序對象上設置的。所以如果你給它一個最高級別的「id」,它將被傳遞給Yii :: app() - > setId()等等。你能否看到你是否能找到問題並提供更多信息? – Blizz