W mojej aplikacji Yii chcę, aby moja hierarchia autoryzacji i reguły biznesowe były napisane w kodzie i chcę, aby moi użytkownicy, role i uprawnienia były przechowywane w bazie danych. Oddziela to moją logikę biznesową (która powinna być kodem) od informacji, których powinna używać (które powinny być danymi). Wygląda na to, że Yii tego nie popiera.Jaki jest powód posiadania reguł autoryzacji w bazie danych?
W Yii istnieje możliwość umieszczenia logiki biznesowej w plikach (CPhpAuthManager) lub w bazie danych (CdbAuthManager). Tak czy inaczej, traktujesz swoją logikę biznesową jako dane; Yii pobierze logikę biznesową w postaci ciągów, a następnie uruchomi ją za pomocą eval
, co wydaje się okropnym sposobem.
Jaki jest tego powód?
Jak mogę osiągnąć pożądany rezultat?
Czy możesz wyjaśnić to lepiej? Dlaczego bizRules powinien znajdować się w bazie danych, dlaczego nie ustawić ich w swoim kodzie? –
Jak wspomniano powyżej ... możesz przenieść swoją logikę do kodu PHP, powyższe scenariusze opisują przypadek użycia z przypisanymi masami rolami (lub zadaniami lub operacjami). Jeśli checkAccess() taki element, jak "CanEditOwnPost", musisz sprawdzić, czy * bieżący * wpis należy do użytkownika, nie można tego zrobić za pomocą "statycznego" wpisu. Dokonaj sprawdzenia w kodzie PHP i przypisz element następnie ... lub dodaj bizRule do swojej bazy danych, która robi to za ciebie. – schmunk
To nadal nie ma sensu, ponieważ kod w bazie danych został eval'd. Byłoby lepiej, gdyby to był kontroler czy coś takiego. –