Вызов функции php из приложения .Net Core на ubuntu
На сервере ubuntu есть приложение .Net Core, которому необходимо проверять логин/пароль пользователя, учетная запись которого создана в php.
Пользователь входит в приложение .Net Core, вводит логин/пароль, которые были зарегистрированы на сайте (в приложении .php)
Можно ли из приложения .Net Core вызвать функцию CheckPassword() из файла php, чтобы проверить пользователя?
Как это сделать?
Ответы (2 шт):
Очевидный ответ - "сделать микросервис!".
Во многих статьях/книжках по микросервисам авторизация приводится как самый первый пример микросервиса.
То есть, архитектурно: в php-приложении следует добавить страницу, которой по HTTPS (например, просто GET'ом) передают пару "логин-пароль". А она отвечает в смысле "Правильная пара" или "Неправильная пара". Фактически, эта страница состоит их вызова функции CheckPassword(), окруженного кодом который берет аргументы и засовывает их в функцию и берет ответ функции и "показывает" его пользователю.
Если Вам хочется безопасности - можно настроить так, чтобы эта страница не торчала в интернет, а отвечала только на запросы из демилитаризованной зоны.
Вот и всё. Ваш микросервис готов. Теперь из приложения (на NET Core), в котором Вам нужна проверка логина-пароля - вы по HTTPS обращаетесь к микросервису, а он говорит, праильный ли пароль или нет.
Но, не стану лукавить, в моём ответе я просто подробнее расписал смысл комментария, который уже полчаса назад оставили под Вашим вопросом.
Если действие необходимо совершить разово (не должно быть постоянным решением), если настройки ОС и .NET позволяют, вы можете обратиться к системному процессу и вызвать аналогично тому, как вызывают php из консоли:
php script.php login1 password1
в script.php производится подгрузка всего функционала (подключаете необходимые файлы или просто autoload.php), который реализует CheckPassword(); и добавляете обработка входящих (https://www.php.net/manual/ru/reserved.variables.argv.php), передавая их в CheckPassword()
Результат выводите просто с помощью echo, системный процесс выведет это как output, а этот output из .NET заберете.