Esistono numerose esercitazioni introduttive su come implementare zfc-user e zfc-rbac in Zend Framework 2. Le pagine github per zfc-user e zfc-rbac (https://github.com/ZF-Commons) sono chiari e l'implementazione è davvero piuttosto semplice (come indicato in molte delle esercitazioni). Ho anche trovato gli schemi SQL necessari per zfc-user e zfc-rbac (/ vendor/zf-commons/zfc- [user/rbac]/data /).Zend Framework 2 con popolazione di database zfc-rbac
La creazione di un utente nel database è semplice, poiché l'utente zfc lo ha già impostato per voi (http://example.com/user). Tutto bene finora. Ora voglio popolare i ruoli, ma non mi è chiaro come compilare correttamente le tabelle rbac. La mancanza di informazioni su questo mi sorprende, dal momento che il componente zfc-rbac è un modulo popolare per Zend Framework.
Capisco il principio del controllo di accesso basato sui ruoli e la popolazione delle tabelle per le autorizzazioni e la tabella che collega le autorizzazioni ei ruoli insieme sono chiari, è la tabella dei ruoli che non mi è chiara. Capisco che puoi avere un ruolo che ha un ruolo padre, ma non è chiaro come popolare la tabella con un ruolo padre poiché esiste un vincolo di chiave esterna che afferma che 'parent_role_id' deve essere un 'role_id'.
Di seguito si riporta il codice SQL per la tabella di ruolo (questa è la SQL fornito da zfc-RBAC):
CREATE TABLE `rbac_role` (
`role_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`parent_role_id` int(11) unsigned NOT NULL,
`role_name` varchar(32) NULL,
PRIMARY KEY (`role_id`),
KEY `parent_role_id` (`parent_role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
ALTER TABLE `rbac_role`
ADD CONSTRAINT `rbac_role_ibfk_1` FOREIGN KEY (`parent_role_id`) REFERENCES `rbac_role` (`role_id`);
Con la chiave esterna in luogo l'aggiunta di un ruolo di genitore sembra impossibile?
INSERT INTO `rbac_role` (parent_role_id, role_name) VALUES (NULL, 'admin');
Fondamentalmente la mia domanda è (e mi sento molto stupido per aver posto questa), ma come si fa un inserto per un ruolo padre assomiglia? E se la dichiarazione di inserimento che ho presentato è in realtà corretta, devo sempre rimuovere la chiave esterna prima di inserire un ruolo genitore?
Non sono esperto di SQL, ma questa associazione auto-referenziata sembra essere falsa. Il 'parent_role_id' HAS deve poter essere' NULL', perché altrimenti non sarai MAI in grado di inserire una prima riga di dati. – Sam
D'accordo con @Sam, 'parent_role_id' dovrebbe essere nullable – Crisp
Questo è quello che pensavo. Grazie. È strano però che zfc-rbac fornisca la dichiarazione della tabella create WITH quella chiave esterna, che dovrebbero o spiegare di più o lasciarla fuori perché questo è un po 'di confusione. –