Maison  >  Article  >  interface Web  >  Express Session implémente la fonction de vérification de connexion (code ci-joint)

Express Session implémente la fonction de vérification de connexion (code ci-joint)

php中世界最好的语言
php中世界最好的语言original
2018-04-18 11:08:361892parcourir

Cette fois, je vais vous proposer une session express pour implémenter la fonction de vérification de connexion (avec code). Quelles sont les précautions pour qu'une session express implémente la fonction de vérification de connexion. Ce qui suit est un cas pratique, voyons. jetez un oeil.

De nombreuses personnes explorent l'utilisation d'Express et de Session pour implémenter la vérification de connexion. Cet article présentera brièvement comment utiliser Express et Session pour implémenter la vérification de connexion. Quel est le code d'implémentation spécifique ? Découvrons ensemble.

1. Écrivez devant

Lorsque nous nous connectons à un site Web, nous fermons le site Web sans nous déconnecter. Après un certain temps, lorsque nous ouvrons à nouveau le site Web, nous serons toujours connectés. En effet, lorsque nous nous connectons à un site Web, le serveur enregistre notre statut de connexion jusqu'à ce que nous nous déconnections ou que le statut de connexion enregistré expire. Alors, comment le serveur stocke-t-il notre statut de connexion ? La réponse est Session, grâce à laquelle le service peut enregistrer l'état de chaque connexion client. Je ne dirai pas grand-chose sur le principe de Session ici. Cet article présente principalement comment utiliser Session pour implémenter l'authentification Connexion utilisateur dans le framework Express.

2. Configuration de l'environnement

Dans l'environnement Node, il n'y a pas de bibliothèque intégrant Express et Session, vous devez donc d'abord entrer et créer un répertoire de projet, puis utiliser les commandes suivantes pour installer quatre modules dans le répertoire racine du projet.

1) Exprimer

Ce module nous permet de construire rapidement un framework de développement web.

2) analyseur de corps

Ce module est le middleware du module Express, qui nous permet d'analyser plus facilement les données corporelles envoyées par le navigateur.

3) séance express

Ce module est également le middleware du module Express, qui nous permet de gérer plus facilement les sessions client.

4) ejs

Ce module est un moteur de rendu. Il est pratique pour nous de lier la variable d'arrière-plan données à la première page.

L'installation est la suivante :

npm install express --save
npm install body-parser --save
npm install express-session --save
npm install ejs --save

3. Connexion et vérification

La session peut marquer l'état du client sur le serveur. Grâce à cela, nous pouvons implémenter la vérification de connexion côté client. Le processus de vérification de la connexion à la session est à peu près le suivant : si le client demande la page d'accueil alors qu'il n'est pas connecté, le serveur redirigera la demande vers la page de connexion une fois le client connecté, le serveur doit enregistrer et sauvegarder l'état de connexion du client ; et donnez une période d'activité, afin que la prochaine fois que le serveur demandera la page d'accueil, il puisse déterminer le statut de connexion du client. Si le statut de connexion est valide, il reviendra directement à la page dont le client a besoin, sinon il sera redirigé vers la page. page de connexion.

Concernant le délai d'expiration de la session, si le délai d'expiration de la session n'est pas défini, le serveur supprimera les sessions qui n'ont pas interagi avec le serveur depuis longtemps en fonction de la période de validité par défaut dans sa propre configuration.

L'exemple de code est publié ci-dessous. L'interface est relativement simple et les commentaires du code d'arrière-plan du serveur sont clairement écrits, je ne l'expliquerai donc pas à nouveau.

La structure des répertoires du projet est la suivante :

Le code de la page de connexion (login.html) est le suivant :

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style type="text/css">
  </style>
</head>
<body>
  <form action="/login" method="POST">
    用户名: <input type="text" name="username"/> <br>
    密码: <input type="password" name="pwd"/>
    <input type="submit" value="Submit"/>
  </form>
</body>
</html>

Le code de la page d'accueil (home.html) est le suivant :

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
  <p>用户名:<span><%= username %> </span> <a href="/logout" rel="external nofollow" >退出登录</a></p>
</body>
</html>

Le code du serveur (app.js) est le suivant :

/**
 * Created by tjm on 9/7/2017.
 */
var express = require('express');
var app = express();
var session = require('express-session');
var bodyparser = require('body-parser');
// 下面三行设置渲染的引擎模板
app.set('views', dirname); //设置模板的目录
app.set('view engine', 'html'); // 设置解析模板文件类型:这里为html文件
app.engine('html', require('ejs').express); // 使用ejs引擎解析html文件中ejs语法
app.use(bodyparser.json()); // 使用bodyparder中间件,
app.use(bodyparser.urlencoded({ extended: true }));
// 使用 session 中间件
app.use(session({
  secret : 'secret', // 对session id 相关的cookie 进行签名
  resave : true,
  saveUninitialized: false, // 是否保存未初始化的会话
  cookie : {
    maxAge : 1000 * 60 * 3, // 设置 session 的有效时间,单位毫秒
  },
}));
// 获取登录页面
app.get('/login', function(req, res){
  res.sendFile(dirname + '/login.html')
});
// 用户登录
app.post('/login', function(req, res){
  if(req.body.username == 'admin' && req.body.pwd == 'admin123'){
    req.session.userName = req.body.username; // 登录成功,设置 session
    res.redirect('/');
  }
  else{
    res.json({ret_code : 1, ret_msg : '账号或密码错误'});// 若登录失败,重定向到登录页面
  }
});
// 获取主页
app.get('/', function (req, res) {
  if(req.session.userName){ //判断session 状态,如果有效,则返回主页,否则转到登录页面
    res.render('home',{username : req.session.userName});
  }else{
    res.redirect('login');
  }
})
// 退出
app.get('/logout', function (req, res) {
  req.session.userName = null; // 删除session
  res.redirect('login');
});
app.listen(8000,function () {
  console.log('http://127.0.0.1:8000')
})

À ce stade, la vérification de la connexion à la session est terminée. Dans l'exemple ci-dessus, la session est enregistrée dans la mémoire du service. Bien entendu, elle peut également être enregistrée dans un fichier ou une base de données. Il vous suffit de configurer le middleware de session.

app.use(session({
  secret: 'secretkey',
  store: new MongoStore({
    db: 'sessiondb'
  })
}));

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture recommandée :

Node.js implémente la fonction de synchronisation en lecture et en écriture

Comment comparer deux chaînes Mêmes données

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!

Déclaration:
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