PHP 模拟 HTTP 基本认证(Basic Authentication)

当某个页面需要认证才能进行访问时,可以发送一个包含 WWW-Authenticate 首部(用来标识认证安全域)的响应,并且响应的 HTTP 状态码为 401;

当浏览器看到一个 401 首部时,会弹出一个对话框,要求输入用户名和密码。如果用户输入了用户名和密码,那么用户输入的用户名和密码将会分别保存至 $_SERVER[‘PHP_AUTH_USER‘] 和 $_SERVER[‘PHP_AUTH_PW‘] 中,开发者可以设计程序验证用户输入的用户名和密码是否正确。

代码:

 1 <?php
 2
 3 header("Content-type: text/html; charset=utf-8");
 4
 5 function validate($user, $pass) {
 6     $users = [‘dee‘=>‘123456‘, ‘admin‘=>‘admin‘];
 7     if(isset($users[$user]) && $users[$user] === $pass) {
 8         return true;
 9     } else {
10         return false;
11     }
12 }
13
14 if(!validate(@$_SERVER[‘PHP_AUTH_USER‘], @$_SERVER[‘PHP_AUTH_PW‘])) {
15     http_response_code(401);
16     header(‘WWW-Authenticate:Basic realm="My website"‘); //对话框显示 http://127.0.0.3 请求用户名和密码。信息为:My website
17     echo ‘需要用户名和密码才能继续访问‘; //取消时浏览器输出
18     exit;
19 } else {
20     var_dump($_SERVER[‘PHP_AUTH_USER‘]);
21     var_dump($_SERVER[‘PHP_AUTH_PW‘]);
22 }

访问页面时,弹出认证窗口:

选择取消时:

输出正确的用户名和密码时:

参考:《PHP Cookbook,3rd》P244

时间: 2024-10-03 13:47:09

PHP 模拟 HTTP 基本认证(Basic Authentication)的相关文章

HTTP基本认证(Basic Authentication)的JAVA示例

大家在登录网站的时候,大部分时候是通过一个表单提交登录信息.但是有时候浏览器会弹出一个登录验证的对话框,如下图,这就是使用HTTP基本认证.下面来看看一看这个认证的工作过程:第一步:  客户端发送http request 给服务器,服务器验证该用户是否已经登录验证过了,如果没有的话,服务器会返回一个401 Unauthozied给客户端,并且在Response 的 header "WWW-Authenticate" 中添加信息.如下图.第二步:浏览器在接受到401 Unauthozie

Nancy 学习-身份认证(Basic Authentication) 继续跨平台

开源 示例代码:https://github.com/linezero/NancyDemo 前面讲解Nancy的进阶部分,现在来学习Nancy 的身份认证. 本篇主要讲解Basic Authentication ,基本认证. 在HTTP中,基本认证是一种用来允许Web浏览器或其他客户端程序在请求时提供用户名和口令形式的身份凭证的一种登录验证方式. 说明:本篇示例是基于 Nancy 1.4.3.Nancy 2.0预览版 已经发布,版本改动较大,故特此说明. 准备 安装 Nancy.Authenti

侠梦说pinpoint-增加web认证Basic Authentication

前言 最近,许多小伙伴吐槽pinpoint-web没有登录认证的问题,隐约记得在web的properties文件中有一个passoword配置,检查后发现这个配置是用于,带admin接口的接口认证用的. 还被官方打上了FIXME,这是要"裸奔"的节奏啊. 思路 首先还是看官网,着急使用的话还是不要重复造轮子了,说不准已经有现成的解决思路了.找来找去我也只发现了这个: 其中的一个Commiter明确指出pinpoint不提供认证,需要自己实现. 好吧,那我们就来自己造个轮子把. 改造过程

HTTP基础认证Basic Authentication

Basic Authentication是一种HTTP访问控制方式,用于限制对网站资源的访问.这种方式不需要Cookie和Session,只需要客户端发起请求的时候,在头部Header中提交用户名和密码就可以.如果没有附加,会弹出一个对话框,要求输入用户名和密码.这种方式实施起来非常简单,适合路由器之类小型系统.但是它不提供信息加密措施,通常都是以明文或者base64编码传输. 在网络嗅探中,Basic Authentication信息非常有价值,因为此类信息往往和路由器之类设备相关,并且不存在

HTTP基本认证(Basic Authentication)的JAVA演示样例

大家在登录站点的时候.大部分时候是通过一个表单提交登录信息.可是有时候浏览器会弹出一个登录验证的对话框.例如以下图,这就是使用HTTP基本认证.以下来看看一看这个认证的工作过程:第一步:  client发送http request 给server,server验证该用户是否已经登录验证过了,假设没有的话,server会返回一个401 Unauthozied给client,而且在Response 的 header "WWW-Authenticate" 中加入信息. 例如以下图. 第二步:

HTTP Basic Authentication认证的各种语言 后台用的

访问需要HTTP Basic Authentication认证的资源的各种语言的实现 无聊想调用下嘀咕的api的时候,发现需要HTTP Basic Authentication,就看了下. 什么是HTTP Basic Authentication?直接看http://en.wikipedia.org/wiki/Basic_authentication_scheme吧. 在你访问一个需要HTTP Basic Authentication的URL的时候,如果你没有提供用户名和密码,服务器就会返回40

HTTP Basic Authentication认证(Web API)

当下最流行的Web Api 接口认证方式 HTTP Basic Authentication: http://smalltalllong.iteye.com/blog/912046 什么是HTTP Basic Authentication?直接看http://en.wikipedia.org/wiki/Basic_authentication_scheme吧

访问需要HTTP Basic Authentication认证的资源的各种开发语言的实现

什么是HTTP Basic Authentication?直接看http://en.wikipedia.org/wiki/Basic_authentication_scheme吧. 在你访问一个需要HTTP Basic Authentication的URL的时候,如果你没有提供用户名和密码,服务器就会返回401,如果你直接在浏览器中打开,浏览器会提示你输入用户名和密码(google浏览器不会,bug?).你可以尝试点击这个url看看效果:http://api.minicloud.com.cn/s

Web API 基于ASP.NET Identity的Basic Authentication

今天给大家分享在Web API下,如何利用ASP.NET Identity实现基本认证(Basic Authentication),在博客园子搜索了一圈Web API的基本认证,基本都是做的Forms认证,很少有Claims认证(声明式认证),而我们在用ASP.NET Identity实现登录,认证,授权的时候采用的是Claims认证. 在Web API2.0中认证接口为IAuthenticationFilter,我们只需实现该接口就行.创建BasicAuthenticationAttribut

asp.net权限认证:摘要认证(digest authentication)

asp.net权限认证系列 asp.net权限认证:Forms认证 asp.net权限认证:HTTP基本认证(http basic) asp.net权限认证:Windows认证 asp.net权限认证:摘要认证(digest authentication) 一.摘要认证由来 摘要认证是对基本认证的改进,即是用摘要代替账户密码,从而防止明文传输中账户密码的泄露 之前对摘要认证也不是很熟悉,还得感谢圆中的 parry 贡献的博文:ASP.NET Web API(三):安全验证之使用摘要认证(dige