Trong ứng dụng Yii của tôi, tôi muốn phân cấp ủy quyền và quy tắc kinh doanh được viết bằng mã và tôi muốn người dùng, vai trò và quyền được lưu trữ trong cơ sở dữ liệu của mình. Điều này tách logic kinh doanh của tôi (mà nên được mã) từ các thông tin nó nên sử dụng (mà nên được dữ liệu). Có vẻ như Yii không ủng hộ điều này.Lý do có quy tắc ủy quyền trong cơ sở dữ liệu là gì?
Trong Yii, bạn có tùy chọn đưa logic nghiệp vụ của mình vào tệp (CPhpAuthManager) hoặc vào cơ sở dữ liệu (CdbAuthManager). Dù bằng cách nào, bạn đang xử lý logic nghiệp vụ của mình dưới dạng dữ liệu; Yii sẽ thực sự truy xuất logic nghiệp vụ của bạn dưới dạng chuỗi và sau đó chạy nó qua một số eval
, điều này có vẻ như là một cách khủng khiếp để thực hiện điều này.
Lý do cho việc này là gì?
Tôi có thể đạt được kết quả như thế nào?
Bạn có thể giải thích điều này tốt hơn không? Tại sao bizRules nên ở trong cơ sở dữ liệu, tại sao không đặt chúng trong mã của bạn? –
Như đã đề cập ở trên ... bạn có thể di chuyển logic của mình sang mã PHP, các tình huống trên mô tả trường hợp sử dụng với Vai trò được giao hàng loạt (hoặc Nhiệm vụ hoặc Hoạt động). Nếu bạn checkAccess() một mục như 'CanEditOwnPost', bạn sẽ phải kiểm tra xem bài đăng * current * có thuộc về người dùng hay không, điều này không thể được thực hiện với mục nhập 'tĩnh'. Hoặc làm kiểm tra trong mã PHP và gán mục sau đó ... hoặc thêm một bizRule vào cơ sở dữ liệu của bạn mà không kiểm tra này cho bạn. – schmunk
Nó vẫn không có ý nghĩa như mã trong cơ sở dữ liệu được đánh giá. Sẽ tốt hơn nếu điều này nằm trong bộ điều khiển hay gì đó. –