Azure Mobile client.logout не выводит пользователя из системы в приложении Ionic

#cordova #ionic-framework #azure-mobile-services

#cordova #ionic-framework #azure-mobile-services

Вопрос:

Я использую библиотеку azure-mobile-apps-client в приложении Ionic, и я могу входить в систему и вызывать службы просто отлично. Однако, когда я вызываю client.logout(), пользователь не удаляется.

Я могу дождаться client.logout().затем (… и увидеть, что client.CurrentUser теперь равен нулю. Но в следующий раз, когда я вызываю client.login(), пользователь автоматически входит в систему без необходимости вводить имя пользователя или пароль. Во всплывающем окне браузера просто написано «Вы успешно выполнили вход», и возвращается новый токен.

Каким-то образом, даже если я выхожу из системы, удаляю приложение и повторно развертываю, пользователю все равно не предлагается повторно ввести свой пароль!

Кто-нибудь знает, что мне нужно сделать, чтобы выйти из системы пользователя с помощью мобильного клиента Azure?

Спасибо!

Ответ №1:

Client.logout() просто удаляет данные с локального клиента. Токен, выпущенный третьей стороной, остается действительным.

Если вам нужен настоящий выход из системы, вам необходимо реализовать проверку подлинности в потоке клиентов и напрямую связаться с поставщиком клиентов, а ЗАТЕМ ТАКЖЕ вызвать client.logout() .

Вы можете найти поток клиентов AAD в моем блоге: https://shellmonger.com/2016/04/06/30-days-of-zumo-v2-azure-mobile-apps-day-4-adal-integration /

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

1. Спасибо, Адриан. Если данные на стороне клиента были удалены, я не понимаю, почему пользователю не запрашивается повторно имя пользователя и пароль. Как он узнает, кто они?

2. Последующий комментарий после некоторого исследования «клиентского потока»: В документах я вижу, как использовать проверку подлинности в потоке клиентов, получая токен непосредственно из стороннего SDK, такого как Facebook, и передавая его. Но я выполняю только вход в систему «aad» с помощью каталога Azure AD. Как в такой ситуации будет работать клиентский поток? Разве я уже не работаю напрямую с поставщиком клиентов?

3. Таким же образом — ознакомьтесь с моим блогом «30 дней Azure Mobile» на shellmonger.com : shellmonger.com / … — У меня есть явное сообщение о входе в систему для потока клиентов AAD с мобильными приложениями Cordova и Azure.

Ответ №2:

Не уверен, что это так, как это должно быть сделано, поскольку в документах ничего из этого не упоминается. Но вот что мы в итоге сделали:

 var client = new WindowsAzure.MobileServiceClient(azureUrl);
client.logout().then(() => {

    var logoutUrl = "https://login.windows.net/common/oauth2/logout";

    var options = {
        hidden: 'yes',
        clearcache: 'yes'
    };

    this.rootScope.$on('$cordovaInAppBrowser:loadstop', function(e, event) {

        if (this.browser != null) {
            this.browser.close();
        }

    });

    this.browser.open(logoutUrl, '_blank', options);

}