Heim > Artikel > Web-Frontend > So legen Sie Seitenzugriffsberechtigungen in Angularjs fest
In früheren Projekten besteht die übliche Art der Zusammenarbeit zwischen Front- und Back-End darin, dass das Front-End der Seite und der Benutzeroberfläche einen kleinen DuangDuangDuang-Effekt verleiht und das Back-End die Rahmendatenstruktur und Dateninteraktion (Dateninteraktion) aufbaut Schnittstelle zwischen Front- und Back-End), unabhängig davon, ob es sich um .net, Java oder PHP handelt, kann eins-zu-viele-Front-End-Dienste bereitgestellt werden. In der neuen Form wird jedoch das Front-End-Framework im Projekt verwendet Die Entwicklungssituation ist anders. Was ich zum Beispiel sagen möchte, ist, dass diese Entwicklung unter dem Winkel-Framework abgeschlossen wird und der Back-End-Modus Dienste und API-Dokumente sowie die Seiten- und Dateninteraktion bereitstellt Die Verarbeitung erfolgt durch das Front-End. Bei diesem Prozess treten unerwartete Probleme auf (wenn Sie keine Back-End-Entwicklung durchgeführt haben), wie z. B. die Seitensteuerung Mit anderen Worten, es ist komplizierter, diese Einstellungen mit der Front-End-Methode vorzunehmen, da diese Daten, dh die „Markierung“ dieser Berechtigungen, direkt abgerufen werden können, wenn das Back-End ausgeführt wird Felddaten abrufen Punkt a.b Es kam sofort heraus, aber das Front-End kann es nur über http-Anfragen abrufen, was umständlich und umständlich ist.
Tatsächlich gibt es in ng viele Möglichkeiten, Seitenzugriffsrechte zu erhalten. Jedes hat seine eigenen Vor- und Nachteile, und Interceptoren werden häufiger verwendet. Mit dem Interceptor können einige Vorgänge ausgeführt werden, bevor oder nachdem das Front-End eine HTTP-Anfrage an das Back-End sendet, z. B. die globale Überwachung, ob der Benutzer angemeldet ist. Die Anmeldeseite springt, wenn Sie nicht angemeldet sind, und Sie können auf die Seite zugreifen, nachdem Sie sich angemeldet haben. Der Einsatz von Abfangjägern wird häufig mit Hintergrunddaten koordiniert, d Seite oder nächste Seite; und hier verwende ich eine Front-End-Steuerungsmethode, ohne Dateninteraktion, die Idee ist, verschiedene Ebenen/Stufen zu definieren. Die Seiten, auf die zugegriffen werden kann, werden am Routing-Punkt abgefangen Auf verschiedenen Ebenen/Stufen können Sie sich auf diese Methode beziehen:
...... app.run(['$rootScope', '$state', '$window', function($rootScope, $state, $window) { $rootScope.$on('$stateChangeStart', function(event, toState, toStateParams) { //用户访问等级阶段, 0 1 2 Array.prototype.contains = function(needle) { for(i in this) { if(this[i] == needle) return true; } return false; } var status=new Array("user.a","user.b","user.c","user.d","user.e","user.f","user.g"); var status0=new Array("user.a","user.b"); var status1=new Array("user.c","user.d"); var status2=new Array("user.a","user.b","user.c","user.d"); if (status.contains(toState.name)) { if(initObj.getStatus()=="0"){ if(!status0.contains(toState.name)){ event.preventDefault(); $state.go('user.approve'); } return; } if(initObj.getStatus()=="1"){ if(!status1.contains(toState.name)){ event.preventDefault(); $state.go('user.result'); } return; } if(initObj.getStatus()=="2"){ if(!status2.contains(toState.name)){ event.preventDefault(); $state.go('user.result'); } return; } } }) }]) ......
Fügen Sie, wie im Code gezeigt, die Statusüberwachung zu ngs hinzu run (Ich verwende hier an-route-ui). Wenn der Routensprung erkannt wird, ist er hier verfügbar. Das Statusarray enthält die Seiten/Routen, auf die auf jeder Ebene/Stufe zugegriffen werden kann. Status enthält den gesamten Satz, der erkannt werden muss. Status0, 1 und 2 sind die Berechtigungszugriffssätze verschiedener Ebenen/Stufen, d. h. die Routing-Sprünge in ng. Der Hashwert stellt die zugängliche Seite dar Ohne Zugriffsrechte kann auf bestimmte Seiten nicht zugegriffen werden. Die hierarchische Stufenkonfiguration von Benutzer a ist beispielsweise status1, einschließlich user.c und user.d. InitObj.getStatus() hat seinen Statuscode 1 zurückgegeben. Wenn er auf den Benutzer zugreifen möchte .a Seite, er wird das Urteil von initObj.getStatus()=="1" eingeben, aber seine konfigurierte zugängliche Seite ist nicht Einschließlich user.a, das heißt! status1.contains(toState.name) (toState.name gibt das zurück Die zu überspringende Seite gibt hier user.a zurück. Geben Sie dann den folgenden Vorgang ein: Geben Sie die öffentliche Seite oder die Eingabeaufforderungsseite ein. Das Prinzip ist einfach. Das ist alles.
Natürlich ist diese Methode sehr unsicher und nicht streng In Bezug auf die Back-End-Steuerung können Sie die Skripte im Projekt auch dann finden, wenn sie sorgfältig durchsucht, komprimiert und verschleiert werden. Die Traces sind festgelegt und das Skript kann vor der Ausführung bearbeitet werden, was große Auswirkungen hat Lücken; es reicht jedoch aus, diese Konfigurationen in einigen kleinen Projekten zu verwenden, und selbst wenn jemand die Statuskonfiguration ändert, werden die Daten und alles sein Wenn es vom Backend angefordert wird und der Status falsch ist, können die Daten nicht angefordert werden , daher wird das Abfangen der Datenbank nur zum Spaß und zum Testen angesehen. Es gibt einen besseren Weg kommunizieren; lass uns zuerst hierher gehen.