我想使用基本授权创建RESTful API。
我怎么能在PHP中做到这一点?我如何通过标题获得下面的字符串和检查PHP端的身份验证?
基本Zajkljask34jlksdlfkjds =
答案 0 :(得分:2)
How to read User Name and Password in PHP with Basic Auth。 以下代码只是示例,您可以如何阅读基本身份验证。细节并进行autherization。
if (isset($_SERVER['PHP_AUTH_USER']) && $_SERVER['PHP_AUTH_USER']==$valid_username && $_SERVER['PHP_AUTH_PW']==$valid_password) {
// the user is authenticated and handle the rest api call here
echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
} else {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo 'Text to send if user hits Cancel button';
exit;
}
?>
授权后,您可以生成会话密钥并将其发送到客户端,客户端可以使用该密钥来调用其余的api方法。使用没有SSL的基本身份验证是不安全的。如果您可以使用HTTPS,那就更好。 请参阅以下链接以配置基本身份验证。
如果您使用的是asp.net web api
http://www.asp.net/web-api/overview/security/basic-authentication
如果您使用的是php,我建议您使用rest api框架
答案 1 :(得分:0)
首先,如果文件尚未存在,则需要创建.htaccess文件。现在,您需要添加以下行:
RewriteEngine On
RewriteRule .* - [e=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
接下来,在要解析信息的PHP文件中添加以下代码行:
if (isset($_SERVER['REDIRECT_HTTP_AUTHORIZATION'])) {
if (strpos(strtolower($_SERVER['REDIRECT_HTTP_AUTHORIZATION']),'basic')===0)
list($username,$password) = explode(':',base64_decode(substr($_SERVER['REDIRECT_HTTP_AUTHORIZATION'], 6)));
}
在这里您可以看到用户名和密码存储在$ username和$ password变量中。现在,您可以对这些值执行任何操作,例如检查数据库 - 您可以通过添加额外的逻辑来执行此操作。