瀏覽器Basic Auth方式認證的phpMyAdmin自動登入_PHP教程

來源:互聯網
上載者:User
本文章來給大家介紹瀏覽器Basic Auth方式認證的phpMyAdmin自動登入,有需要瞭解的同學可進入參考。

一、需求
自動登入 phpMyAdmin。最終能夠解決自動登入所有使用 Basic Auth 方式認證的網頁。

.
二、phpMyAdmin 的四種認證登陸方式
1.config 設定檔。直接將允許登入的使用者名和密碼寫在 config.inc.php 設定檔中。
2.cookie。最常用的方式,通過填寫首頁表單進行登入。
3.http。HTTP Basic Authentication 方式,使用瀏覽器的彈出式對話方塊進行登入。與 cookie 方式的區別主要在於使用者體驗。
4.signon。單點登入,適用於系統整合。使用者登入了某系統後,不必再輸使用者名稱密碼即可以一鍵登入 phpMyAdmin。
參考:http://wiki.phpmyadmin.net/pma/Auth_types

按道理 signon 方式應該是滿足需求的首選方案,只不過項目開發總是有妥協和遷就,要盡量少幹預現有系統的運行。另外,在實現 signon 方式登入的同時,還需要保留原有的使用者輸使用者名稱密碼的登入方式,即備用登入方案。這就將問題複雜化了。

三、什麼是 Basic Auth
現有系統使用了 Basic Auth 方式,於是我研究了怎樣能夠在這種情況下也一鍵登入。

在訪問一個需要 HTTP Basic Authentication 的 URL 時,如果你沒有提供使用者名稱和密碼,伺服器就會返回 401,這時瀏覽器會提示你輸入使用者名稱和密碼。例子如下:

代碼如下 複製代碼
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.1 401 Unauthorized');
} else {
echo "

Hello {$_SERVER['PHP_AUTH_USER']}.

";
echo "

You entered {$_SERVER['PHP_AUTH_PW']} as your password.

";
}
?>

儲存為login.php,瀏覽 http://localhost/login.php 查看效果。


瀏覽器Basic Auth:IE9和Chrome的彈出式認證對話方塊
在瀏覽器彈出的視窗中輸入使用者名稱密碼,如果使用 Chrome 開發人員工具(或者 Firebug)查看,會發現其實它只是多發送了一個類似下面的要求標頭:

Authorization: Basic bXlfdXNlcm5hbWU6bXlfcGFzc3dvcmQ=
四、Basic Auth 認證的自動登入解決方案
要想通過認證,原則上有 2 種方法

•一是在要求標頭中添加 Authorization(可用 Javascript 來實現):
Authorization: “Basic 使用者名稱和密碼的base64加密字串”
•二是在 url 中添加使用者名稱和密碼(IE 不支援):
http://username:password@domain.com/login.php

用 js 添加要求標頭可以使用 XMLHttpRequest,實現代碼如下:

代碼如下 複製代碼



login





Basic Auth 認證的自動登入解決方案,總結下——

1、使用者名稱密碼直接寫在 URL 裡。

缺點:不夠安全,且 IE 不支援。

2、寫一個登陸表單,php 將使用者名稱密碼填到表單中,然後頁面 onload 時 js 產生 Authorization 要求標頭提交

缺點:本系統和 phpMyAdmin 必須在同一個域。例如本系統在 admin.domain.com,而 phpMyAdmin 在 phpmyadmin.domain.com 這種情況 js 是無法跨域提交的。

3、本系統將使用者名稱密碼 post 到 phpMyAdmin 所在域的一個表單,那個表單再拿來用 js 登陸。

缺點:需要到 phpMyAdmin 所在域新增一個頁面實現跨域。

http://www.bkjia.com/PHPjc/629832.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/629832.htmlTechArticle本文章來給大家介紹瀏覽器Basic Auth方式認證的phpMyAdmin自動登入,有需要瞭解的同學可進入參考。 一、需求 自動登入 phpMyAdmin。最終能夠解...

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.