Usted está aquí:
Limitar el número de sesiones simultáneas con flujos de inicio de sesión
Puede utilizar un flujo de inicio de sesión para restringir el número de sesiones de Salesforce simultáneas por usuario.
Instalar el paquete de sesiones simultáneas
El paquete no gestionado de sesiones simultáneas incluye los elementos y orígenes de una solución de flujo de inicio de sesión. El paquete incluye un complemento que recupera el número de sesiones simultáneas de un usuario. Si el inicio de sesión pendiente supera el límite de sesiones simultáneas, el flujo lo bloquea.
Puede personalizar el paquete, por ejemplo, cambiando el límite de sesiones. El paquete utiliza de forma predeterminada un límite de sesiones de 1.
- Para instalar el paquete de sesiones simultáneas, vaya a https://login.salesforce.com/packaging/installPackage.apexp?p0=04to0000000WR73.
- Después de instalar el paquete, podrá conectar el flujo de inicio de sesión con perfiles de usuario. Asigne el flujo a perfiles para los que desee limitar las sesiones simultáneas.
Creación de los componentes del paquete
Echemos un vistazo con mayor detalle a los componentes del paquete de sesiones simultáneas. Si el paquete no existe, así es como puede crear el complemento y el flujo de inicio de sesión.
SessionPlugin es una clase de Apex que recupera el número de sesiones simultáneas. Esta clase consulta la tabla AuthSession y suma el número de sesiones, excluyendo las sesiones temporales.
- Desde Configuración, en el cuadro Búsqueda rápida, ingrese Clases de Apex y, a continuación, seleccione Clases de Apex.
- Para crear una clase, haga clic en Nuevo.
- Copie y pegue este código como el contenido de la clase de Apex.
global class SessionPlugin implements Process.Plugin { global Process.PluginDescribeResult describe() { Process.PluginDescribeResult result = new Process.PluginDescribeResult(); result.description='This plug-in returns the no of concurrent sessions for the current user'; result.tag='Identity'; result.inputParameters = new List<Process.PluginDescribeResult.InputParameter> { }; result.outputParameters = new List<Process.PluginDescribeResult.OutputParameter> { new Process.PluginDescribeResult.OutputParameter('CONCURRENT_NO', Process.PluginDescribeResult.ParameterType.INTEGER) }; return result; } global Process.PluginResult invoke(Process.PluginRequest request) { Map<String, Object> result = new Map<String, Object>(); List<AuthSession> sessions; Integer no = 0; String userid = UserInfo.getUserId(); sessions = [Select Id, ParentId, SessionType from AuthSession where UsersId=:userid]; for (AuthSession s : sessions) { // Count only parent and non-temp and non-internal sessions if(s.ParentId == null && s.SessionType != 'TempUIFrontdoor' && s.SessionType != 'InternalServiceCall' ) { no++; } } result.put('CONCURRENT_NO', no); return new Process.PluginResult(result); } }
Creación del flujo de inicio de sesión
El flujo de inicio de sesión del paquete incluye estos elementos.
- SessionPlugin: El complemento de Apex que consulta el número de sesiones simultáneas.
- Decision: Verifica si el número de sesiones simultáneas supera el límite. El resultado determina si se bloquea o se permite el inicio de sesión.
- Block Screen: Si el inicio de sesión supera el límite, el flujo muestra el elemento de pantalla de bloqueo.
- Assignment: Si el inicio de sesión supera el límite, este elemento asigna la variable LoginFlow_ForceLogout en
truey evita el inicio de sesión. - Dummy Screen: Este elemento es un marcador de posición. Un flujo requiere que un elemento de la interfaz de usuario siga una variable de resultado.
- Desde Configuración, en el cuadro Búsqueda rápida, Flujos seleccione Flujos, y luego haga clic en Nuevo flujo.
- Seleccione Flujo de pantalla, y haga clic en Crear.
- Desde la caja de herramientas, en la ficha Gestor, haga clic en Nuevo recurso. Cree una variable booleana LoginFlow_ForceLogout de resultado. Cuando se establece en
true, esta variable bloquea el intento de inicio de sesión.
- Cree una variable numérica para almacenar el número permitido de sesiones simultáneas para el usuario.
Nota Si el límite de usuarios simultáneos es 1, y finaliza la sesión de un usuario o la sesión se agota, indique al usuario esperar unos minutos antes de intentar iniciar sesión de nuevo. El sistema necesita tiempo para borrar periódicamente registros de sesiones obsoletos de la memoria. - Desde la caja de herramientas, abra la ficha Elementos. Arrastre un elemento Acción de Apex (heredada) en el lienzo y seleccione la acción de Apex heredada SessionPlugin. Almacene el parámetro CONCURRENT_NO de la acción en la variable de flujo session_no.

- Agregue un elemento Decisión que tenga dos resultados. Si el inicio de sesión supera el límite, el resultado es Block, que es el predeterminado. En caso contrario, el resultado es Allow.

- Agregue un elemento Pantalla que indique al usuario que superó el número permitido de sesiones simultáneas.

- Agregue un elemento Asignación que establezca la variable de resultado LoginFlow_ForceLogout en
true.
- Agregue una pantalla sin contenido.

- Conecte los elementos entre sí. Cuando conecta la decisión con la primera pantalla seleccione el resultado Bloquear.

- Guarde el flujo.
- Active el flujo.
- Conecte el flujo de inicio de sesión a un perfil de usuario. Mejores prácticas para crear un usuario de prueba dedicado con un perfil de prueba.
- Cierre la sesión y, a continuación, inicie sesión como usuario de prueba y pruebe el flujo.
Cuando asigne el perfil a los usuarios, Salesforce los redirecciona al inicio de sesión a través del flujo. Cuando un intento de inicio de sesión supera el límite, el usuario ve la pantalla de bloqueo y no puede iniciar sesión. A continuación se incluye un ejemplo de la pantalla de bloqueo en Lightning Experience.


