Cómo: Obtener acceso a las funciones de usuario con servicios de aplicaciones cliente

Puede utilizar servicios de aplicaciones cliente para recuperar información de funciones de un servicio de funciones de Microsoft Ajax existente. Para obtener información sobre cómo configurar el servicio de funciones, vea Utilizar información de roles con Microsoft Ajax.

El procedimiento siguiente muestra cómo tener acceso a la información de la función de usuario de los usuarios autenticados en una aplicación de formularios Windows Forms configurada para utilizar un servicio de funciones. Para obtener más información, vea Cómo: Configurar servicios de aplicaciones cliente. Este procedimiento requiere acceso a un servicio de funciones de Microsoft Ajax en ejecución. Para obtener orientación sobre pruebas de un extremo a otro de las características de los servicios de aplicaciones cliente, vea Tutorial: Usar servicios de aplicaciones cliente.

Para determinar si un usuario tiene una función determinada

  • Llame al método IsInRole de la referencia IPrincipal recuperada de la propiedad static Thread.CurrentPrincipal. Este método devuelve un valor Boolean que puede utilizar para proporcionar acceso a una funcionalidad especial, tal como se muestra en el ejemplo siguiente. Este método devolverá false si el usuario no se autentica o no está en la función especificada,.

    El método IsInRole obtiene acceso internamente a los servicios de funciones remoto a través de la clase ClientRoleProvider. Aunque puede tener acceso a la clase ClientRoleProvider directamente, normalmente tendrá acceso indirectamente a ella, tal como se muestra en el código siguiente. Para obtener más información, vea Información general sobre los servicios de aplicaciones cliente.

    El ejemplo de código siguiente asume que la aplicación contiene un control Button denominado managerOnlyButton.

    If System.Threading.Thread.CurrentPrincipal.IsInRole("manager") Then
    
        managerOnlyButton.Visible = True
    
    End If
    
    if (System.Threading.Thread.CurrentPrincipal.IsInRole("manager"))
    {
        managerOnlyButton.Visible = true;
    }
    

Programación eficaz

El código de ejemplo de este tema muestra el uso más simple del servicio de funciones en una aplicación cliente de Windows. Sin embargo, si tiene acceso a las funciones de usuario a través de los servicios de aplicaciones cliente, el código puede iniciar una excepción WebException si el servicio no está disponible. Para obtener un ejemplo de cómo administrar una excepción WebException en este caso, vea Tutorial: Usar servicios de aplicaciones cliente.

Además, el método IsInRole siempre devolverá false si el inicio de sesión del usuario ha expirado. Esto no ocurrirá si la aplicación llama al método IsInRole poco después la autenticación. Si la aplicación debe recuperar las funciones de usuario en otras ocasiones, conviene agregar el código para volver a validar a los usuarios cuyo inicio de sesión haya expirado. Si todos los usuarios válidos están asignados a funciones, puede determinar si el inicio de sesión ha expirado llamando al método ClientRoleProvider.GetRolesForUser. Si no se devuelve ninguna función, significa que el inicio de sesión ha expirado. Para obtener un ejemplo de esta funcionalidad, vea el método GetRolesForUser. Esta funcionalidad sólo es necesaria si ha seleccionado Exigir que los usuarios vuelvan a iniciar sesión cuando expire la cookie del servidor en la configuración de la aplicación. Para obtener más información, vea Cómo: Configurar servicios de aplicaciones cliente.

Vea también

Tareas

Cómo: Configurar servicios de aplicaciones cliente

Tutorial: Usar servicios de aplicaciones cliente

Referencia

ClientRoleProvider

Thread.CurrentPrincipal

IPrincipal.IsInRole

Conceptos

Información general sobre los servicios de aplicaciones cliente

Utilizar información de roles con Microsoft Ajax

Otros recursos

Servicios de aplicación cliente