ClientFormsIdentity.RevalidateUser Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Autentica al usuario sin notificación mediante las credenciales almacenadas en memoria caché.
public:
void RevalidateUser();
public void RevalidateUser ();
member this.RevalidateUser : unit -> unit
Public Sub RevalidateUser ()
Ejemplos
En el código de ejemplo siguiente se muestra cómo usar este método para volver a validar de forma silenciosa a un usuario cuando la aplicación deja el estado sin conexión. En este ejemplo, un CheckedChanged controlador de eventos actualiza el estado sin conexión para que coincida con el valor de la casilla. Si el usuario establece la aplicación en el estado en línea, el controlador de eventos intenta volver a validar el usuario. Sin embargo, si el servidor de autenticación no está disponible, el controlador de eventos devuelve la aplicación al estado sin conexión.
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
Comentarios
Cuando se usa la autenticación de formularios para validar el usuario actual, la ClientFormsIdentity clase almacena las credenciales de usuario siempre y cuando se ejecute la aplicación. Sin embargo, el usuario solo se autentica hasta que expire la cookie de autenticación. Una vez expirada la cookie, el usuario debe volver a validarse para acceder a los roles remotos o a los servicios de configuración web. Puede usar el cuadro de diálogo Configuración avanzada para servicios para configurar la aplicación para volver a validar automáticamente el usuario. Sin embargo, si configura la aplicación para que respete la expiración de la cookie, puede volver a validar mediante programación al usuario llamando al RevalidateUser método . Este método también es útil al cambiar del modo sin conexión al modo en línea, ya que es posible que la aplicación se haya cerrado mientras está sin conexión.
Nota
El método RevalidateUser es solo para su comodidad. Dado que no tiene un valor devuelto, no puede indicar si hubo un error de validación. La revalidación puede producir un error, por ejemplo, si las credenciales del usuario cambiaron en el servidor. En este caso, quizás desee incluir código que valida explícitamente a los usuarios después de que se produzca un error en una llamada al servicio. Para obtener más información, vea la sección Accessing Web Settings (Acceso a la configuración web) en Walkthrough: Using Client Application Services (Tutorial: Uso de servicios de aplicaciones cliente).