Аутентификация wordpress из внешнего приложения Blazor WASM

#blazor #webassembly #wordpress-login

Вопрос:

Есть сайт на wordpress. Регистрация пользователей осуществляется на сайте, учетные записи хранятся в базе данных сайта. Необходимо аутентифицировать пользователей из внешнего приложения (Blazor WASM) с использованием системы и базы данных сайта, после чего, в случае успешной авторизации, пользователь сможет работать во внешнем приложении.

Как это можно сделать с помощью http-запросов?

Комментарии:

1. Извините, я неправильно набрал, Бритва — должно быть, это Блейзор

Ответ №1:

Это будет зависеть от нескольких вещей —

  1. Вы размещаете приложение WASM на отдельном домене? Если это так, вам нужно будет настроить CORS на сервере.
  2. Как вы поддерживаете аутентифицированный сеанс? Печенье? Веб-токены JSON (JWT)? Пользовательский токен доступа или идентификатор?

Вам нужно будет включить authorization заголовок со всеми HTTP-запросами, чтобы убедиться, что пользователь по-прежнему авторизован для доступа к вашему приложению. К счастью, с Blazor WASM есть очень простой способ добавить этот заголовок ко всем исходящим HTTP-запросам, используя пользовательскую реализацию AuthorizationMessageHandler . Вот пример того, как я лично успешно использую этот точный код в своем собственном приложении Blazor WASM:

 public class CorsAuthorizationMessageHandler : AuthorizationMessageHandler
{
    public CorsAuthorizationMessageHandler(IAccessTokenProvider provider, 
       NavigationManager navigation) : base(provider, navigation)
    {
        ConfigureHandler(
            authorizedUrls: new[] { "https://api.myapp.com" }
        );
    }
}
 

Вот это добавляется в HttpClient Program.cs :

 builder.Services.AddHttpClient(
    "Private.ServerAPI", 
    client => client.BaseAddress = new Uri("https://api.myapp.com")
).AddHttpMessageHandler<CorsAuthorizationMessageHandler>();
 

Комментарии:

1. Спасибо за ответ! К сожалению, это не совсем то, что я ищу. Проблема не в WASM, проблема в том, как получить подтверждение аутентификации с сайта WP

2. Тогда я в замешательстве, значит, вы не используете Blazor WASM? Если вы пытаетесь проверить авторизацию в PHP, просто используйте переменные заголовков/сеанса.

3. Мое приложение-Blazor WASM. Учетные записи хранятся в базе данных сайта WP. Регистрация пользователей осуществляется на сайте, учетные записи хранятся в базе данных сайта. Необходимо аутентифицировать пользователей из приложения Blazor WASM с помощью системы и базы данных сайта, после чего, в случае успешной авторизации, пользователь сможет работать в приложении Blazor WASM.

4. Хорошо, это означает, что вам придется настроить генерацию JWT на стороне PHP.

5. Мне нужно только подтверждение логина/пароля с сайта WP, я ищу способ подключиться к сайту, отправить запрос и получить ответ