Heim >Web-Frontend >js-Tutorial >Teilen Sie die detaillierte Erklärung der Express + Node.js-Implementierung des Login-Interceptors
Dieser Artikel stellt hauptsächlich den Beispielcode von Express + Node.js zur Implementierung des Interceptors vor, daher werde ich ihn jetzt mit Ihnen teilen und als Referenz geben. Folgen wir dem Editor und werfen wir einen Blick darauf.
Einführung
Der Interceptor hier entspricht dem Filter in Spring MVC, alle http Der entsprechende Code Auf /resource kann erst zugegriffen werden, nachdem die Anfrage vom Interceptor verarbeitet wurde.
Das typischste Anwendungsszenario ist die Implementierung einer Zugriffskontrolle, die verschiedenen Benutzern/Benutzergruppen unterschiedliche Zugriffsrechte auf Seiten und Schnittstellen gewährt und nur den Zugriff auf zulässige Seiten und Schnittstellen erlaubt.
Szenario
app.post('/login', function(request, res, next){ // do something }); app.post('/getData',function(request, res, next){ // do something var data="some data"; res.send({"data":data}); });
Wenn keine Verarbeitung erfolgt, kann jeder, der getDatas Post-Anfrage sendet, dies direkt aus Reading tun Daten im Hintergrund erfordern keine Anmeldung, Sie müssen lediglich die Schnittstelle kennen.
Wenn unter jeder Schnittstelle eine Berechtigungsbeurteilung hinzugefügt wird, ist der Code sehr repetitiv, sodass Sie vor jeder HTTP-Anfrage einen Interceptor hinzufügen können Funktion des Erlaubnisurteils.
Implementierung
// 所有用户可以访问index.html, error.html // admin可以访问admin.html, /getData // 登陆用户可以访问home.html app.all('/*', function(request, res, next){ // 思路: // 得到请求的url // 然后得到request的cookie,根据cookie得到当前登陆的用户 // 判断用户对应url的权限 var jsPattern=/\.js$/; var url=request.orignalUrl; if(jsPattern.test(url)){ // 公共部分,放行 next(); return; } if(url=='index.html'||url=='error.html'){ next(); return; } var cookie=JSON.stringify(req.cookies); if(access){ next(); } else{ res.redirect('error.html'); } });
Implementierungsideen:
1 Fordern Sie an (wie oben beschrieben) und erhalten Sie die aktuell besuchte URL
2. Ermitteln Sie den aktuellen Benutzer anhand des Cookies
3. Beurteilen Sie anhand der Identität des URL und der Benutzer Ob darauf zugegriffen werden kann
4 Wenn next() aufgerufen werden kann, geben Sie
Fehler zurück message
next(); ist nur eine Funktion, die dem ursprünglichen Code entspricht B. die vorherige app.post('/getData'), wenn die Codeverarbeitung hier abgeschlossen ist, wird sie zum entsprechenden next(); zurückgegeben, sodass die entsprechende Beziehung bei Bedarf gut verarbeitet werden muss. return ist erforderlich, um die aktuelle Funktion zu beenden, andernfalls tritt ein Fehler auf.
Das obige ist der detaillierte Inhalt vonTeilen Sie die detaillierte Erklärung der Express + Node.js-Implementierung des Login-Interceptors. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!