Heim  >  Artikel  >  Web-Frontend  >  Teilen Sie die detaillierte Erklärung der Express + Node.js-Implementierung des Login-Interceptors

Teilen Sie die detaillierte Erklärung der Express + Node.js-Implementierung des Login-Interceptors

零下一度
零下一度Original
2018-05-26 15:22:192551Durchsuche

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

Hinweis

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.
  1. Öffentliche Teile wie JS-Plug-Ins, einige
  2. Bilder
  3. und CSS-Teile können direkt veröffentlicht werden.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn