ClientFormsIdentity.RevalidateUser Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Silenciosamente autentica o usuário usando credenciais armazenadas em cache.
public:
void RevalidateUser();
public void RevalidateUser ();
member this.RevalidateUser : unit -> unit
Public Sub RevalidateUser ()
Exemplos
O código de exemplo a seguir demonstra como usar esse método para revalidar silenciosamente um usuário quando o aplicativo sair do estado offline. Neste exemplo, um CheckedChanged manipulador de eventos atualiza o status offline para corresponder ao valor da caixa de seleção. Se o usuário definir o aplicativo como o estado online, o manipulador de eventos tentará revalidar o usuário. No entanto, se o servidor de autenticação não estiver disponível, o manipulador de eventos retornará o aplicativo para o estado offline.
private void workOfflineCheckBox_CheckedChanged(
object sender, EventArgs e)
{
ConnectivityStatus.IsOffline = workOfflineCheckBox.Checked;
if (!ConnectivityStatus.IsOffline)
{
try
{
// Silently re-validate the user.
((ClientFormsIdentity)
System.Threading.Thread.CurrentPrincipal.Identity)
.RevalidateUser();
// If any settings have been changed locally, save the new
// new values to the Web settings service.
SaveSettings();
// If any settings have not been changed locally, check
// the Web settings service for updates.
Properties.Settings.Default.Reload();
}
catch (System.Net.WebException)
{
MessageBox.Show(
"Unable to access the authentication service. " +
Environment.NewLine + "Staying in offline mode.",
"Warning", MessageBoxButtons.OK,
MessageBoxIcon.Warning);
workOfflineCheckBox.Checked = true;
}
}
}
Private Sub workOfflineCheckBox_CheckedChanged( _
ByVal sender As Object, ByVal e As EventArgs) _
Handles workOfflineCheckBox.CheckedChanged
ConnectivityStatus.IsOffline = workOfflineCheckBox.Checked
If Not ConnectivityStatus.IsOffline Then
Try
' Silently re-validate the user.
CType(System.Threading.Thread.CurrentPrincipal.Identity, _
ClientFormsIdentity).RevalidateUser()
' If any settings have been changed locally, save the new
' new values to the Web settings service.
SaveSettings()
' If any settings have not been changed locally, check
' the Web settings service for updates.
My.Settings.Reload()
Catch ex As System.Net.WebException
MessageBox.Show( _
"Unable to access the authentication service. " & _
Environment.NewLine + "Staying in offline mode.", _
"Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning)
workOfflineCheckBox.Checked = True
End Try
End If
End Sub
Comentários
Quando você usa a autenticação de formulários para validar o usuário atual, a ClientFormsIdentity classe armazena as credenciais do usuário enquanto o aplicativo estiver em execução. No entanto, o usuário só será autenticado até que o cookie de autenticação expire. Depois que o cookie expirar, o usuário deverá ser revalidado para acessar as funções remotas ou os serviços de configurações da Web. Você pode usar a caixa de diálogo Configurações Avançadas para Serviços para configurar seu aplicativo para revalidar automaticamente o usuário. No entanto, se você configurar seu aplicativo para respeitar a expiração do cookie, poderá revalidar programaticamente o usuário chamando o RevalidateUser método . Esse método também é útil ao alternar do modo offline para o modo online, pois o aplicativo pode ter sido desligado enquanto está offline.
Observação
O método RevalidateUser é apenas para conveniência. Como ele não tem um valor de retorno, não é possível indicar se a revalidação falhou. A revalidação pode falhar, por exemplo, se as credenciais do usuário tiverem sido alteradas no servidor. Nesse caso, você talvez queira incluir o código que valida usuários explicitamente após uma chamada de serviço falhar. Para obter mais informações, consulte a seção Acessando configurações da Web em Passo a passo: usando serviços de aplicativo cliente.