Sollten im Modell oder in der Steuerung Benutzerberechtigungsprüfungen stattfinden? Und wer sollte die Berechtigungsprüfungen, das User-Objekt oder einen UserManagement-Helfer durchführen?
Wo soll es passieren?
Einchecken des Controllers:
class MyController {
void performSomeAction() {
if (user.hasRightPermissions()) {
model.someAction();
}
}
...
Wenn Sie die Prüfungen im Controller haben, können Sie die Aktionen der Models vereinfachen, sodass die gesamte Logik für die Controller erhalten bleibt.
Einchecken des Modells:
class MyModel {
void someAction() {
if (user.hasRightPermissions()) {
...
}
}
...
Indem wir die Checks in das Modell einfügen, erschweren wir das Modell, stellen aber auch sicher, dass Benutzer nicht versehentlich Dinge tun dürfen, die sie im Controller nicht tun sollen.
Und von wem?
Wer sollte die Kontrollen durchführen, wenn wir uns auf dem Platz entschieden haben? Der Nutzer?
Class User {
bool hasPermissions(int permissionMask) {
...
}
...
Aber es liegt nicht in der Verantwortung des Benutzers, zu wissen, auf was er oder sie zugreifen kann, also vielleicht eine Helferklasse?
Class UserManagement {
bool hasPermissions(User user, int permissionMask) {
...
}
...
Ich weiß, dass es üblich ist, nur eine einzige Frage in einer Frage zu stellen, aber ich denke, dass diese Fragen gut zusammen beantwortet werden können.