Pregunta

He estado pensando acerca de la aplicación web que estoy a punto de comenzar a desarrollar y preguntándose si mi enfoque habitual podría mejorarse.

En mis últimas aplicaciones que he creado una tabla (véase más adelante) de los roles (como CREATE POST, EDIT POST etc.) que tienen cada uno un campo de bits que se les aplica por lo que simplemente puede asignar a un usuario ciertos derechos en el registro y la verificación ellos más adelante (por ejemplo $user->hasRight(CREATE_POST)).

Me pregunto si hay una mejor aproximación a este. Es ciertamente confuso cuando los derechos no están específicamente relacionados con el usuario (que podría tener una tabla donde cada derecho es una columna booleana, sino que sólo suena como una pequeña mejora) - y lo que sucede si cambio de algunos por

No estoy buscando a utilizar las bibliotecas estándar (la aplicación en sí es una experiencia de aprendizaje para mí: el uso de PostgreSQL, git, etc.) aunque estoy muy feliz de inspirarse en ellos para construir mi propia - por lo que si hay algo especial crees que debería echar un vistazo a favor decirlo:)

¿Fue útil?

Solución

Eso es básicamente el mismo enfoque que tomo en mis propias aplicaciones web (y un poco de ensayo y error que ha ido a por mí). La única diferencia es, probablemente haría uso de una tabla que tiene los diferentes permisos como columnas, por lo que si desea añadir más permisos más adelante, se puede. Usando los bits en un número entero que limita a un número fijo de permisos, a saber, tantos bits como los hay en el número entero. Normalmente eso sería 32 que supongo que es probablemente suficiente, pero yo preferiría no limito de esa manera.

Por lo que vale, que es también el modelo que utiliza phpBB (permisos como columnas de la tabla), y si es lo suficientemente bueno para posiblemente el más popular aplicación web PHP, que es probablemente lo suficientemente bueno para usted; -)

Otros consejos

Se puede echar un vistazo a la documentación de la primavera de Seguridad (antes Acegi), que es un marco de Java ACL ampliamente utilizado.

La documentación es exhaustiva y también se describen las diversas consideraciones hechas en el diseño de la autenticación y la autorización bot. Incluso sin el uso de Java es digno de lectura.

Puede ver el página de índice a obtener una visión general y una impresión de lo que hace Acegi (y no) hacer. También puede pasar directamente a la conceptos de autorización o incluso para la esquema de base de .

Estoy seguro de que ha encontrado Phpgacl ya, pero aquí hay un enlace en caso de que no se tiene. Puede ser un poco difícil de envolver su cabeza en torno al principio, y sin duda la biblioteca es complicado (tiempo) para implementar en un proyecto, pero la documentación y la demostración son puntos de referencia excelente.

PHP Generic Access Control Lists

El href="http://framework.zend.com/manual/en/" rel="nofollow noreferrer"> Marco tiene un ACL que es similar a lo que estás tratando de hacer.

ACL se acerca en aplicaciones web, en general, se han discutido, por ejemplo aquí .

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