Cambio de usuario de conexión a la BD

Buenos días,

He intentado añadir mayor seguridad a las acciones dentro de la aplicación en Yii con las que se pueden establecer usando usuarios propios de la base de datos, para lo cual necesitaría cambiar el USR y PSW de conexión a la BD.

Al usar las funciones Yii::app()->db->setActive y luego Yii::app()->db->setAttribute las variables ‘username’ y ‘password’ no cambian manteniendo las establecidas en config/main.php.

En la clase Yiibase intenté modificar los campos con una función set y tampoco me lo permite.

Esperaría que esto permitiera el manejo de conexiones variables (‘dinámicas’) deacuerdo con la autenticación y por ende, los permisos específicos en tablas, campos y acciones detalladas en la BD

Agradecería de su ayuda para lograr este objetivo.

Gracias,

No entiendo muy bien la razón de esto… Podrías ser un poco más especifico??

Saludos,

La razón es la implementación de una interfase con los inicios de sesión de SQL Server a los cuales se les pueden asignar permisos a nivel de tablas, campos y funciones. Actualmente la implementación en Yii usa un solo usuario para conectarse con la BD y los usuarios de la aplicación deben ser manejados como registros de tablas.

Gracias por la atención a mi caso.

Agradezco a alguno de los miembros aclararme o guiarme en la posibilidad de implementar este requerimiento.

La interface a nivel de base de datos, tal como lo hace SQL Server, la implementa Yii en sus clases de control de acceso. Tú especificas en cada modelo, iniciando la sesión en tu aplicación, qué puede o no hacer y/o qué acciones permites a cada tipo de usuario o a qué usuarios en particular (’@’ registrados, * todos, ‘admin’ usuario admin, etc…).




public function filters()

{

   return array(

   'accessControl', // perform access control for CRUD operations

);

	}


	/**

	 * Specifies the access control rules.

	 * This method is used by the 'accessControl' filter.

	 * @return array access control rules

	 */

	public function accessRules()

	{

		return array(

			array('allow', // allow authenticated user to perform 'create' and 'update' actions

				'actions'=>array('create','update'),

				'users'=>array('@'),

			),

			array('allow', // allow admin user to perform 'admin', 'batch' and 'delete' actions

				'actions'=>array('admin','delete','batch'),

				'users'=>array('admin'),

			),

			array('deny',  // deny all users

				'users'=>array('*'),

			),

		);

	}



Ya sabes que los modelos son los encargados de hacer consultas y/o modificar las bases de datos, pues bien, también puedes hacer un sistema basado en ‘ROLES’ - no sé cómo se dice en español, con el que puedes decidir qué pueden o no pueden ver o realizar los usuarios de tu sistema. Yo personalmente, no utilizo, ni creo que utilice el sistema de roles tal y como lo hace Yii, lo tengo desarrollado de otro modo. Pero de ahí lo bueno de esta librería, la libertad que tienes para realizar una u otra cosa.

Entonces, dicho esto… para qué un sistema de multiconexión con la base de datos? No crees que es un poco ilógico?

De todas formas, esta es una visión personal a lo que consultas, por favor no te lo tomes a mal.

Un saludo

Gracias Antonio por tu respuesta,

Es cierto que Yii a través de los ROLES maneja los permisos sobre las vista, pero cuando quiero hacerlo a nivel de campos me resulta tedioso. Ahora como bien sabes las bases de datos robustas manejan permisos por columnas en sus tablas, pero para esto se deben tener creados usuarios de la base de datos; en Yii se conecta con un único usuario a la BD y no me sirve para establecer estos permisos específicos porque le aplicarían a todos los usuarios autenticados en Yii.

Nuevamente agradezco la atención a mi requerimiento.