Я пытаюсь принудительно выйти из системы на сервере Azure. Если вы щелкнете для выхода из системы, а затем нажмете кнопку «Войти», у вас не будет запрошено имя пользователя / пароль, просто вы снова войдете в систему.
Я пишу приложение UWP, которое подключается к веб-серверу Azure. Если это уместно, вы можете увидеть, что при выходе из системы он удаляет ссылку из диспетчера учетных данных Windows и восстанавливает ее, как только вы нажимаете кнопку «Войти».
По сути, у меня есть вопросы: что еще мне нужно удалить, чтобы приложение не получало предыдущие учетные данные вместо запроса, чтобы новый пользователь мог войти в систему?
public async Task LogoutAsync()
{
if (Client.CurrentUser == null || Client.CurrentUser.MobileServiceAuthenticationToken == null)
return;
// Invalidate the token on the mobile backend
var authUri = new Uri($"{Client.MobileAppUri}/.auth/logout");
using (var httpClient = new HttpClient())
{
httpClient.DefaultRequestHeaders.Add("X-ZUMO-AUTH", Client.CurrentUser.MobileServiceAuthenticationToken);
await httpClient.GetAsync(authUri);
}
// Remove the token from the cache
_loginProvider.RemoveTokenFromSecureStore();
// Remove the token from the MobileServiceClient
await Client.LogoutAsync();
}
public async Task<MobileServiceUser> LoginAsync()
{
Client.CurrentUser = _loginProvider.RetrieveTokenFromSecureStore();
if (Client.CurrentUser != null && !IsTokenExpired(Client.CurrentUser.MobileServiceAuthenticationToken))
{
// User has previously been authenticated, return current authenticated user
return Client.CurrentUser;
}
if (Client.CurrentUser != null && IsTokenExpired(Client.CurrentUser.MobileServiceAuthenticationToken))
{
// Token is expired so perform a Logout
await LogoutAsync();
}
// We need to ask for credentials at this point
await _loginProvider.LoginAsync(Client).ConfigureAwait(false);
if (Client.CurrentUser != null)
{
// We were able to successfully log in, store token for authenticated user
_loginProvider.StoreTokenInSecureStore(Client.CurrentUser);
}
return Client.CurrentUser;
}
Я должен добавить, что код (я не писал оригинальную программу), кажется, основан на этой ссылке https://adrianhall.github.io/develop-mobile-apps-with-csharp-and-azure/. В исходном приложении не было метода, позволяющего пользователю выйти из системы, так что это было вызывается только когда срок действия токена истек.