#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);
}