ClientFormsIdentity.RevalidateUser Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Autentica silenciosamente o utilizador usando credenciais em cache.
public:
void RevalidateUser();
public void RevalidateUser();
member this.RevalidateUser : unit -> unit
Public Sub RevalidateUser ()
Exemplos
O seguinte exemplo de código demonstra como usar este método para revalidar silenciosamente um utilizador quando a aplicação sai do estado offline. Neste exemplo, um CheckedChanged gestor de eventos atualiza o estado offline para corresponder ao valor da caixa de seleção. Se o utilizador definir a aplicação para o estado online, o gestor de eventos tenta revalidar o utilizador. No entanto, se o servidor de autenticação não estiver disponível, o gestor de eventos devolve a aplicação ao 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
Observações
Quando usa autenticação de formulários para validar o utilizador atual, a ClientFormsIdentity classe armazena as credenciais do utilizador enquanto a aplicação estiver a funcionar. No entanto, o utilizador só é autenticado até o cookie de autenticação expirar. Após o término do cookie, o utilizador deve ser revalidado para aceder aos papéis remotos ou aos serviços de definições Web. Pode usar a caixa de diálogo Definições Avançadas para Serviços para configurar a sua aplicação para revalidar automaticamente o utilizador. No entanto, se configurar a sua aplicação para honrar a expiração dos cookies, pode revalidar programaticamente o utilizador chamando o RevalidateUser método. Este método também é útil ao mudar do modo offline para o modo online, porque a aplicação pode ter sido desligada enquanto offline.
Note
O RevalidateUser método é apenas por conveniência. Como não tem valor de retorno, não pode indicar se a revalidação falhou. A revalidação pode falhar, por exemplo, se as credenciais do utilizador tiverem sido alteradas no servidor. Neste caso, pode querer incluir código que valide explicitamente os utilizadores após a falha de uma chamada de serviço. Para mais informações, consulte a secção Aceder às Definições Web em Guia: Utilização de Serviços de Aplicação Cliente.