2010-05-15 15 views
5

¿Dónde, cuándo y cómo crear la cuenta de administrador/usuario para un sitio web privado?Cuenta de administrador: ¿Dónde, cuándo y cómo?

Entonces, lo que estoy preguntando es cuál es la técnica preferible para crear esa primera cuenta de administrador/usuario. En mi caso, es para una aplicación de Internet privada. Estoy hablando de la cuenta/usuario que poseerá la aplicación y, si es necesario, creará/promocionará a los otros administradores. ¿Supongo que puedes este tipo el usuario raíz?

Aquí hay algunas maneras en las que me encontré en otros sitios web/webapplication.

asistente de instalación:
Usted ve esto mucho en el software blog o foros. Cuando instale la aplicación, le pedirá que cree un usuario administrador. La aplicación privada de Internet probablemente no tenga esto.

archivo de instalación:
Un archivo se ejecuta para instalar la aplicación. Este archivo creará la cuenta de administrador para usted.

archivos

configuración:
Un archivo de configuración que contiene las credenciales para la cuenta de administrador.

insertar manualmente en una base de datos:
insertar manualmente la información del administrador en la base de datos.

+0

Defina "insertar/crear la cuenta de administrador". No está claro qué es exactamente lo que quieres hacer. Sus "pocas formas" son ligeramente diferentes en essense. ¿Necesitas integrar una parte de administrador? ¿Necesitas insertar una cuenta de administrador? ¿Necesitas leer las credenciales de administrador? –

+0

Lo editaré de inmediato. – Pickels

+0

No está mencionando otra opción, la preferida: una tarea de rake para sembrar la aplicación. – kikito

Respuesta

3

Cuando:

En una fase de arranque. Alguien ha sugerido seeds.rb. Personalmente prefiero usar la gema bootstrapper (con algunas adiciones que me permiten analizar archivos csv).

Esta acción le permite crear una tarea rake que puede ser invocada como esto:

rake db:bootstrap 

Esto creará el usuario administrador inicial, así como cualquier dato de siembra (como la lista de países o un formato de blog predeterminado, etc.). El script es muy flexible. Puede pedirle una contraseña o aceptar un parámetro de contraseña, si así lo desea.

Cómo:

En todos los casos utilizo declarative_authorization el fin de gestionar los permisos de usuario.

Su usuario administrador debe devolver un rol llamado 'admin' (o el nombre que elija) en la lista de funciones asociadas. Normalmente tengo 1 función única por usuario, principalmente porque puedo usar la herencia de roles (por ejemplo, los administradores también son editores por defecto). Esto significa que en mi base de datos tengo un solo campo para usuarios llamado "role_id". 0 es generalmente para el rol de administrador, ya que es el primero creado.

Dónde:

Un archivo específico dentro db/bootstrap/users.rb (o yaml, o CSV) especifica los detalles de un usuario con el rol de administrador activada. El pedido rake db:boostrap analiza ese archivo y crea al usuario en consecuencia.

+0

Buena respuesta con información adicional. – Pickels

1

Los veo etiquetados ruby ​​on rails aquí. En RoR probablemente usaría el archivo seeds.rb en/your_app/db.

Si está utilizando asp.net, podría suponer que está utilizando MSSQL o tal vez Oracle. Tener un proceso almacenado que se ejecuta como un script de instalación podría hacer el trabajo.

He visto las aplicaciones php usando un archivo install.php que cuando se ejecuta una vez instala los datos necesarios en la base de datos y luego le dice al instalador que elimine el archivo antes de que la aplicación se ejecute.

De modo que hay tres formas de solucionarlo.

1

Si tiene cuentas de usuario en su sitio web (y veo que las tiene), el archivo de configuración con las credenciales del administrador es muy incómodo. Esta solución le obliga a duplicar una gran parte de la lógica de autenticación. Mejor mantener la cuenta en la base de datos.

Entiendo que está preparando la solicitud para usted, no entregándola a sus clientes. La preparación del asistente de instalación o de los archivos de instalación parece ser una pérdida de tiempo.

Haría lo más simple: inserto en bruto. Pros: sin trabajo adicional, el mismo mecanismo de autenticación que para otros usuarios. Si está utilizando algún tipo de migración de base de datos, puede crear una migración que cree una cuenta raíz con alguna contraseña ficticia que pueda cambiar más adelante.

+0

El comentario que dijo sobre el asistente de instalación es muy cierto. – Pickels

1

Asistente de instalación: - definitivamente el mejor enfoque. Limpio, seguro y fácil de usar. Debe integrarse con el instalador de la aplicación.

Archivo de instalación: - bien, pero solo si tiene una secuencia de comandos única para ejecutar. Tener más -> problemas y fallas de seguridad potenciales (todas las personas que olvidan eliminar este archivo después de ...)

Archivos de configuración: Para evitar. Es exigente usuario conocer PHP, detalles internos de su aplicación, puede que la configuración del lado del servidor (por encima de FTP puede ser "difíciles")

manualmente insertarlo en una base de datos: Para evitar * 2.

Además , las dos últimas soluciones son imposibles si usa hashing de contraseñas (es decir, md5 o sha1 con sal específica del sitio), lo cual es una obligación hoy en día.

+0

Si trabaja con OpenID también puede hacer las dos últimas porque no guardará ninguna contraseña. – Pickels

+0

OpenID para el administrador? No estoy seguro de si es una buena idea –

+0

La inserción manual de un administrador es perfectamente factible, simplemente agrega un campo a cada registro de usuario especificando su nivel de privilegio y ajusta un usuario regular al estado de administración actualizando un campo. Siempre que tengas acceso a la base de datos, evitarás por completo el problema de tu contraseña. – Drew

Cuestiones relacionadas