Служба приложений Azure PHP перенаправляет при входе в систему - PullRequest
0 голосов
/ 24 января 2019

Пытаясь узнать больше о других языках и облаке, я загрузил приложение с открытым исходным кодом, написанное на PHP, для его запуска в Azure: FoOlSlide2 . Также известно, что он работает без проблем на XAMPP или WAMPP.

Мне удалось настроить всю среду приложения, создать и подключить базу данных MySql, запустить приложение и воспроизвести его метод установки и настройки базы данных без проблем.

Но каждый раз, когда я пытаюсь войти в систему с действительными учетными данными, он не может войти в систему, просто перенаправляет меня на страницу входа снова. Но когда я пытаюсь ввести неверные учетные данные, не происходит перенаправления http, а также я получаю отзыв о недопустимой попытке.

Выполнение некоторых поисков как здесь , заставляет меня думать if could be a rewrite configuration error, так как пришлось преобразовать .htaccess в web.config файл. Хотя я сделал это, используя собственный IIS URL Rewrite для генерации моих правил, а также попробовал онлайн-инструменты, чтобы сделать это преобразование для меня, но ни один из них не сработал.

Я также пытался найти в портале Azure какую-то опцию - службы приложений, которая могла бы безуспешно устранять неполадки при входе в систему. Версия Php совместима с проектом (5.6), и приложение успешно соединяется с базой данных, так как это требуется для его настройки и созданы все необходимые таблицы.

Ниже, вся соответствующая информация, которая, как мне кажется, может быть использована для обнаружения проблемы, а также я могу предоставить больше при необходимости.

Сценарий попытки входа в систему с неверными учетными данными (работает должным образом):

Request URL: https://xxxxxxxxxxxxx/account/auth/login/
Request Method: POST
Status Code: 200 OK
[...] Error response inside 

Сценарий попытки входа в систему с действительными учетными данными ( Не работает должным образом):

Request URL: https://xxxxxxxxxxxxx/account/auth/login/
Request Method: POST
Status Code: 302 Moved Temporarily
[Header] Location: https://xxxxxxxxxxxxx/account/profile/

Request URL: https://xxxxxxxxxxxxx/account/profile/
Request Method: POST
Status Code: 302 Moved Temporarily
[Header] Location: https://xxxxxxxxxxxxx/account/auth/login/

Request URL: https://xxxxxxxxxxxxx/account/auth/login/
Request Method: GET
Status Code: 200 OK
[Here I am back to login form even inputted valid credentials]

Весь мой web.config (правила, сгенерированные с использованием IIS URL Rewriter):

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
    <rewrite>
      <rules>
        <rule name="Imported Rule 1" stopProcessing="true">
          <match url="^(.*)$" ignoreCase="false" />
          <conditions>
            <add input="{R:1}" pattern="^(index\.php|assets|content|robots\.txt|favicon\.ico)" ignoreCase="false" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
          </conditions>
          <action type="Rewrite" url="./index.php?{R:1}" appendQueryString="true" />
        </rule>
      </rules>
    </rewrite>  
    <httpProtocol>
  <customHeaders>
    <remove name="ETag"/>
    <add name="Access-Control-Allow-Origin" value="*"/>
    <add name="X-UA-Compatible" value="IE=Edge,chrome=1"/>
    <remove name="X-Powered-By"/>
    <add name="Cache-Control" value="max-age=691200" />
  </customHeaders>
</httpProtocol>
<defaultDocument>
  <files>
    <clear />
    <add value="index.php" />
  </files>
</defaultDocument>
</system.webServer>
</configuration>

.htacess файл из GitHub (который я использовал для генерации своих правил web.config)

DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|assets|content|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php?$1 [L,QSA]

** Обновление с дополнительной информацией: **

Я также пытался развернуть другую службу приложений в Azure, опять же на PHP, под названием MangaReader , а также с открытым исходным кодом, и она прекрасно работает в WAMPP / XAMPP. У меня также возникают похожие проблемы с попытками входа в систему - не перенаправление, а успешный код состояния без авторизации.

Как и прежде, я сгенерировал файл web.config с помощью IIS URL Rewriter на основе файла .htaccess; а также смог настроить всю базу данных и запустить настройку сайта. После этого мое маленькое сомнение в том, что я могу быть ошибкой проекта, прошло.

Это выглядит так:

  • Ошибка при преобразовании файла .htaccess в web.config;
  • Некоторые недостающие настройки в службе приложений портала Azure;
  • Некоторая недостающая конфигурация в IIS;
  • Любая неизвестная ошибка.

** Редактировать 2, Дополнительная информация **

Сама проблема не в том, чтобы управлять сессиями на основе файлов .php, поскольку FoOlSlide2 и MangaReader (оба упомянутые ранее) делают это в таблице mysql. Кроме того, FoOlSlide2 имеет функцию балансировки нагрузки для обработки большого количества запросов (масштабирование по горизонтали)

1 Ответ

0 голосов
/ 01 февраля 2019

Управление сессиями через базу данных вместо файла PHP. Azure очень шаткий, и я считаю, что это лучший способ обойти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...