Pregunta

Estoy debatiendo la mejor manera de propagar permisos bastante complejos del servidor a una aplicación AJAX, y no estoy seguro de cuál sea el mejor enfoque.

Esencialmente, quiero que se definan mis permisos para poder solicitar un conjunto completo de permisos de una sola vez, y ajustar la IU según corresponda (los cambios en la IU pueden ser tan bajos como deshabilitar ciertos elementos del menú contextual). Por supuesto, todavía necesito hacer cumplir el lado del servidor de permisos.

Por lo tanto, me preguntaba si alguien tiene alguna sugerencia para la mejor manera de

  1. mantenga los permisos y utilícelos en el código del servidor
  2. tenga fácil acceso a los permisos en javascript
  3. no tiene que realizar una solicitud de ida y vuelta al servidor para cada permiso individual

¿Pensamientos?

¿Fue útil?

Solución

Si tiene un conjunto claro de permisos, como un " nivel de usuario " o " tipo de usuario " ;, simplemente puede pasar el valor hacia abajo en un campo oculto y acceder al valor a través del DOM. Aún podría hacer esto si sus permisos fueran más granulares, pero tendría muchos campos ocultos o tendría que codificar la información en XML o JSON o algún otro formato.

Puede establecerlos como indicadores de bits para que pueda O O un solo valor numérico con una máscara para ver si el usuario tenía el permiso para una actividad específica. Eso sería muy flexible y, mientras no tenga más de 32 "derechos" específicos, eso permitiría cualquier permutación de esos derechos en un paquete muy pequeño (básicamente un int sin signo).

Por ejemplo:

0x00000001 //edit permission
0x00000002 //create new thing permission
0x00000004 //delete things permission
0x00000008 //view hidden things permission
   .
   .
   .
0x80000000 //total control of the server and everyone logged in

Luego, un usuario con un permiso de 0x000007 podría editar, crear y eliminar, pero nada más.

En cualquier caso, creo que está en el camino correcto: realice la solicitud una vez por invocación de la página, almacene los permisos en una estructura de datos global de JavaScript y continúe desde allí. AJAX es bueno, pero no desea consultar el servidor para cada permiso específico en toda su página. Lo haría una vez en la carga de la página, configuraría la presentación de la página y guardaría el valor en una variable global, luego haría referencia a los permisos localmente para las funciones de eventos.

Otros consejos

Si transmite la estructura de permisos al cliente como un objeto JSON (o XML, si lo prefiere), puede manipular ese objeto con el código del lado del cliente y enviarlo de vuelta al servidor, que puede hacer lo que sea necesita validar los datos y conservarlos.

No necesariamente lo veo como el más " correcto " solución, pero ¿sería posible mantener todas las cosas de permisos en el lado del servidor y simplemente servir la interfaz de usuario actualizada en lugar de algún tipo de sistema de permisos JSON?

Tendría que tomar la decisión en función de lo ocupada e intensiva que su aplicación espera, pero definitivamente vale la pena tomar una decisión

Codifíquelos como JSON .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top