Maison > interface Web > js tutoriel > Share Express + Node.js implémentation de l'explication détaillée de l'intercepteur de connexion

Share Express + Node.js implémentation de l'explication détaillée de l'intercepteur de connexion

零下一度
Libérer: 2018-05-26 15:22:19
original
2605 Les gens l'ont consulté

Cet article présente principalement l'exemple de code d'Express + Node.js pour implémenter l'intercepteur. L'éditeur pense que c'est plutôt bien, je vais donc le partager avec vous maintenant et le donner comme référence. Suivons l'éditeur et jetons un oeil.

Introduction

L'intercepteur ici correspond au filtre dans spring MVC, tout http Le code correspondant /resource n’est accessible qu’après le traitement de la demande par l’intercepteur.

Le scénario d'application le plus typique consiste à mettre en œuvre un contrôle d'accès, en donnant à différents utilisateurs/groupes d'utilisateurs différents droits d'accès aux pages et aux interfaces, et en autorisant uniquement l'accès aux pages et interfaces autorisées.

Scénario

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});
});
Copier après la connexion

Si aucun traitement n'est effectué, toute personne qui envoie la demande de publication de getData peut directement depuis Reading les données en arrière-plan ne nécessitent aucune connexion, il vous suffit de connaître l'interface.

correspond à chaque interface. Si un jugement d'autorisation est ajouté sous chaque interface, le code sera très répétitif, donc orienté aspect Vous pouvez ajouter un intercepteur avant chaque requête http, pour réaliser le. fonction de jugement de permission.

Mise en œuvre

// 所有用户可以访问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');
  }
});
Copier après la connexion

Idées de mise en œuvre :

1. Demandez (ce qui précède suffit) et obtenez l'URL actuellement visitée

2 Obtenez l'utilisateur actuel en fonction du cookie

3. URL et l'utilisateur S'il est accessible

4 S'il peut appeler next();

S'il n'est pas accessible, renvoie erreur. message

Remarque

  1. next(); a traité la demande, comme le précédent app.post( '/getData'), lorsque le traitement du code ici est terminé, il reviendra au next(); correspondant, donc la relation correspondante doit être bien gérée si nécessaire, return est nécessaire pour terminer la fonction en cours, sinon une erreur se produira.

  2. Pour les parties publiques, telles que les plug-ins js, certaines images et les parties css, elles peuvent être publiées directement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal