Я создаю новое приложение PhoneGap, в котором мне нравится использовать AJAX для выполнения аутентифицированного запроса к моему серверу.
Например, я хочу увидеть заявление клиента.
И я думаю о том, как выполнить аутентификацию и получить данные.
Сервер:
PHP, MYSQL, SLIM FRAMEWORK
В этом у меня есть конечная точка с именем info.php
App:
AJAX REQUEST, сделанный из данных, сохраненных в localStorage
Server Scrypt:
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
require 'vendor/autoload.php';
$app = new \Slim\App;
$app->get('/hello/{name}', function (Request $request, Response $response, array $args) {
$name = $args['name'];
$response->getBody()->write("Hello, $name");
return $response;
});
$app->post('/aggiungi/{name}/{sur}', function (Request $request, Response $response, array $args) {
$this->logger->addInfo("Ticket list");
$name = $args['name'];
$sur = $args['sur'];
$mo = $name + $sur;
$response->getBody()->write("Hello, ".$mo);
$headers = $request->getHeaders();
$username = $headers['PHP_AUTH_USER'][0];
$password = $headers['PHP_AUTH_PW'][0];
$user = '';
$pass = 'mypwd';
try {
$dbh = new PDO('mysql:host=localhost;dbname=myserver', $user, $pass);
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
$uname = $username;
$stmt = $dbh->prepare("MYQUERY");
$stmt->execute(array(':uname'=>$uname));
$userRow=$stmt->fetch(PDO::FETCH_ASSOC);
if($stmt->rowCount() > 0)
{
if(password_verify($password, $userRow['password'])){
// AUTHENTICATED GO ON;
$a = "yes"; } else {
$a = "no";
header("HTTP/1.1 401 Unauthorized");
exit;
}
} else {
header("HTTP/1.1 401 Unauthorized");
exit;
$a = "no";
}
return "other stuff";
});
Эта конечная точка проверяет, выходит ли пользователь из базы данных и правильно ли введен пароль.
Вот как я делаю AJAX-запрос
var username = localStorage.username;
var password = localStorage.password;
beforeSend: function (xhr) {
xhr.setRequestHeader ("Authorization", "Basic " + btoa(username + ":" + password));
},
Тогда я бы знал, если это безопасно, и если бы вы могли дать мне совет о том, как работать.