类似于路由器登录的 PHP 用户身份验证

标签 php apache authentication

如何在 php 中创建用户身份验证,就像我们尝试登录路由器时一样。

enter image description here

当我输入 url,例如 www.example.com/portal 时,应该会出现如上图所示的提示,询问用户名和密码。

这是什么类型的身份验证。如何在 php 中编写代码。

注意:我必须完全控制我运行的服务器。那么是否需要安装任何特殊模块我可以安装。

最佳答案

这称为基本身份验证。请参阅文档中的此示例:

<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header('WWW-Authenticate: Basic realm="My Realm"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Text to send if user hits Cancel button';
    exit;
} else {
    echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
    echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>";
}
?>

http://php.net/manual/en/features.http-auth.php

本质上,您发送状态代码为 401 Unauthorized 的正确 header 。浏览器看到这个连同您的 WWW-Authenticate header ,并提示用户为您服务。完成后,您可以在 $_SERVER['PHP_AUTH_USER']$_SERVER['PHP_AUTH_PW'] 中看到用户名和密码。

您应该知道,如果您使用的是基本身份验证,用户名/密码将以纯文本形式发送。如果您需要任何类型的安全性,则必须使用 HTTPS。此外,根据您的应用程序,您会发现无法有效地“注销”。大多数浏览器会记住整个 session 的用户名/密码,并在每个后续请求中发送它。

关于类似于路由器登录的 PHP 用户身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7388549/

相关文章:

authentication - openid.claimed_id 是静态的吗?

ruby-on-rails - rails : token authentication from scratch

php - 为什么来自 POSTMAN 的 POST 请求返回空?

php - 将 select_query 更改为 mysql_query?

java - Apache FTP 服务器 : MVN Build Failed on Java 8 (SSL)

regex - htaccess 删除 .php、.html 和尾部斜杠

java - 如何创建用于 Web 服务的密码摘要?

php - 如何保护网站免受批量抓取/下载?

php - 需要一个唯一的电子邮件地址

java - 让应用程序的多个实例在 Apache Tomcat 中运行的最佳方法是什么?