sql >> Base de Datos >  >> RDS >> Mysql

Gestión de cuentas de usuario, roles, permisos, autenticación PHP y MySQL

Si está creando una aplicación web que implica crear, leer, actualizar y eliminar información de cualquier tipo, será muy común que los privilegios para realizar estas diferentes operaciones en los datos deban compartirse entre sus usuarios de acuerdo con sus diferentes roles. y permisos en su aplicación.

Tome una aplicación de gestión escolar, por ejemplo. Los usuarios de dicha aplicación generalmente se encuentran dentro de las categorías:estudiantes, maestros, jefes de departamento (HOD), etc. Su solicitud NO debe permitir que un estudiante tenga el privilegio de agregar o actualizar sus resultados para los exámenes semestrales. Esa sería la función de un Maestro. Y cuando se va a agregar un nuevo curso o materia al plan de estudios, solo el Jefe de Departamento debe trabajar para agregar ese curso en el sistema.

En tal sistema, podemos referirnos a Estudiante, Profesor, HOD (Jefe de Departamento) como los diferentes roles en nuestra aplicación. En cuanto a acciones como agregar y actualizar los resultados de los estudiantes, agregar nuevos cursos, nos referiremos a estos como los permisos.

De la explicación hasta ahora, ya se puede deducir que un Usuario tendrá un Rol y un rol tendrá múltiples Permisos. Por ejemplo, John (un usuario) tendrá un rol (Estudiante) y múltiples Permisos (registrar curso, ver calificaciones, imprimir transcripciones, etc.).

Esto significa que en nuestra base de datos MySQL necesitaremos 3 tablas de base de datos principales:usuarios, roles y permisos. Estamos obligados a tener una relación de muchos a uno entre los usuarios y las tablas de la base de datos de funciones (una función pertenece a muchos usuarios) y una relación de muchos a muchos entre las funciones y las tablas de permisos (se pueden asignar muchos permisos a muchas funciones) .

La forma en que se refiere a estos roles depende de usted. En nuestro ejemplo, hemos estado usando Student, Teacher, HOD para representar los roles porque el ejemplo se trataba de una aplicación de gestión escolar. Si estuviera trabajando en una aplicación de gestión hotelera, los roles pueden ser algo así como Gerente, Limpiador, Recepcionista y similares.

En este tutorial, estamos construyendo un sistema de administración de cuentas de usuario para una aplicación de blog. Por lo tanto, nos referiremos a estos roles como autor, editor y administrador. Por supuesto, puede cambiarlos como desee, pero estos tres son casi un estándar para los sistemas de administración de contenido.

Se implementará un sistema completo de registro e inicio de sesión de administrador/usuario. Todos los usuarios iniciarán sesión a través del mismo formulario de inicio de sesión y, una vez que hayan iniciado sesión, solo los usuarios administrativos (autores, editores, administradores) tendrán acceso al panel de administración, mientras que los usuarios normales serán redirigidos a la página de inicio pública.

Crearemos una tabla de base de datos de publicaciones en nuestra base de datos para tener algo en lo que probar nuestros permisos. Por ejemplo, un usuario con el rol de Editor podrá editar, actualizar, publicar, anular la publicación y eliminar todas y cada una de las publicaciones, mientras que un Autor solo tendrá permiso para crear, leer, actualizar y eliminar solo aquellas publicaciones que hayan sido creado por ellos mismos. El administrador tendrá permiso para crear, actualizar, eliminar otros usuarios y roles administrativos y también para asignar o anular la asignación de permisos a roles y roles a usuarios.

NOTA:Ya hice un tutorial sobre cómo crear una aplicación de blog completa desde cero. Por lo tanto, en realidad no implementaremos la creación, eliminación y actualización de publicaciones aquí. Solo demostraremos cómo funcionan estos permisos en torno a las publicaciones. Si desea aprender a crear un blog con publicaciones, consulte mi otro tutorial sobre cómo crear un blog en PHP.

Estructura del directorio del proyecto.

Cree una carpeta de proyecto llamada cuentas de usuario y luego cree otras tres carpetas dentro de ella:admin, include, assets, cada una con las siguientes subcarpetas:

admin:esta carpeta contiene el código fuente para la parte de administración de la aplicación. En esta carpeta, cree otras tres carpetas, a saber, publicaciones, funciones y usuarios.

activos:Esto contendrá archivos públicos a los que accederá el navegador, como imágenes, css, js. Entonces, dentro de los activos, cree carpetas de imágenes, css y js.

incluye:Esto contendrá parches de código fuente para nuestra aplicación que podemos incluir en diferentes lugares de nuestra aplicación. Dentro de esta carpeta, cree otras dos carpetas:diseños y lógica.

En este punto, la estructura de nuestro proyecto está lista. Ahora podemos comenzar a codificar el sistema. Lo haremos en la siguiente parte de este tutorial.

Gracias por su atención y espero verlos en la siguiente parte.