De hecho si , yo tengo una idea que tengo que poner en practica, el asunto es crear una varible en memoria que simule una sessión y guardar en esa variable información que pueda ser consultada en el cliente, hasta el momento lo que se me ocurre es guardar una cadena con estilo Json y utilizar el interprete de Scripts para codificar y decodificar pero me falta ver que tan viable es.
ahi te dejo la idea posteare el resultado si llega a funcionar.
Con una variable texto en memoria ya te sirve, creas la variable con la longitud adecuada para los permisos requeridos, luego en cada posición de la variable lo pones a 0 o 1, según esté o no permitido, creas una función para obtener, el permiso que deseas -int permiso( posición)- y compruebas si está a 1 o a 0.
Hola, mira nosotros tenemos algo parecido a lo tuyo, nos encontramos con ese problema, pero la solución fue crear un evento inicio en cada formulario donde se cachean a un array local los permisos, donde la posición 1 corresponde con el primer control del formulario suceptible de ser afectado por los permisos, el 2 el segundo, etc. Este array contiene 1, 2 o 3, correspondiendo con -no se muestra-, -se muestra- o -se muestra y edita-.
<span style="font-size: 10px;">La velocidad a la hora de comprobar con el array local es suficiente para que no se note el efecto de lentitud anterior.