2007年10月3日 星期三

[hack]使用SSL連線的管理界面

伙伴 huihui 最近在玩 ca 認證主機,幫 blog 簽了一個 SSL 憑證,要試試虛擬主機是否能使用獨立的憑證

試完了,想說 SSL 憑證不用白不用,於是動手改一改 LifeType 程式,看看能否做到後台管理界面都在 SSL 連線下作業,至少 login 時輸入帳號密碼會比較安全。

初步試驗算蠻成功的,只修改兩個地方:

第一個地方,提供管理界面網址的程式碼, class/net/baserequestgenerator.class.php 裡的 getAdminUrl() 方法,改成如下:


baserequestgenerator getAdminUrl() method
function getAdminUrl( $useSubdomains = true ) { // $url = $this->getBaseUrl( $useSubdomains )."/admin.php"; $url = "https://blog.nlhs.tyc.edu.tw/admin.php"; return $url; }

這部份因為 LifeType 並沒有提供相關的設定值可以用,而且目前是試著玩看看,我就直接把管理界面的網址 hard code 成我網誌管理頁面的 https 連結了,想嚐試的人這裡要自己更改。晚上再跟 mark 商量看看,在管理界面裡加入相關設定值來支援的可能性。

其實這裡完成後,只要模版裡是規規矩矩的用 {$url->getAdminUrl()} 來產生管理界面網頁連結的應該就可以達成使用 https 連線進管理界面了。只要先把 server 上的 cache 清掉 (./tmp/* ) 大概就可以正常工作了。若還有問題,那大概要檢查一下模版裡是不是用了其他方法產生 admin.php 的連結。

另一個要改的地方是摘要頁面 summary 的模版。在 templates/summary/index.template 裡,登入表單的 action 值是用相對路徑到 "admin.php" ,登入後的「管理者界面」連結也要處理。下面是我修改的地方:


templates/summary/index.template
{****上略****} <h2>{$locale->tr( "login" ) }</h2> {*改下面這行*} <form id="loginForm" method="post" action="{$url->getAdminUrl( ) }"> <fieldset class="inputField"> {dynamic} { if $authuser} { assign var=userName value=$authuser->getUsername( ) } {$locale->pr( "summary_welcome_msg", $userName) }<br/> {*還有下面這行*} <a href="{$url->getAdminUrl( ) }?op=blogSelect">{$locale->tr( "summary_go_to_admin" ) }</a> { else } {****下略****}

這樣, summary 也可以用 https 連管理界面了。

沒有留言:

張貼留言