簡體   English   中英

如何使用Jade在Node.js中創建會話

[英]How to create a session in node.js with jade

我登錄了管理面板,現在我想實現該會話。 我正在大量搜索,但找不到如何在node.js中實現會話。 當我從管理面板登錄時,我只是想存儲令牌,而注銷會話將被破壞。 請幫忙。 這是我的登錄代碼:

`use strict`

const bcrypt = require('bcrypt');
const jwt = require('jsonwebtoken');
const User = require('../../user/auth/storage/model/User');
const userPopulation = require('../../user/auth/storage/populate/userPopulation');
var loginServices = {};

loginServices.login = (req, res, next) => {
    // var rollno = param.rollno.toLowerCase()
    // var email = req.body.email
    // console.log(email);
    return User.findOne({ email: req.session.email })
        .then(user => {
            console.log(user)
            if (user && bcrypt.compareSync(req.body.password, user.password)) {
                if (user.role == 'admin') {
                    const token = authToken(user)
                    res.render('../views/home', { token: token, user: user });
                } else {
                    res.redirect('/auth/login');
                }
            }
            else {
                res.redirect('/auth/login');
                // return Promise.reject(ES.authError('Authentication Failed'))
            }
        })
}

const authToken = (user) => {
    return jwt.sign(
        {
            email: user.email,
            _id: user._id,
            role: user.role
        },
        process.env.SECRET_KEY,
        {
            expiresIn: process.env.TOKEN_EXPIRY_TIME
        }
    )
}

module.exports = loginServices;

這是app.js的代碼段:

require('dotenv').config();
const express = require('express');
const path = require('path');
const app = express();
const morgan = require('morgan');
const bodyParser = require('body-parser');
const session = require('express-session');
const mongoose = require('mongoose');
const Promise = require('bluebird');
mongoose.Promise = Promise;


app.use(morgan("dev"));
app.use('/uploads', express.static('uploads'));
app.use(session({
    secret:'sssshhh',
    saveUninitialized: true,
    resave: true
}))
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json({
    // Because Stripe needs the raw body, we compute it but only when hitting the Stripe callback URL.
    verify: function(req,res,buf) {
        var url = req.originalUrl;
        console.log('------------'+url);
        if (url.startsWith('/notify_transaction_success')) {
            req.rawBody = buf.toString();
        }
    }}));
app.use(express.static(path.join(__dirname, '../public')));

我進行了大量搜索,但找不到任何解決方案。 請幫我。

基本上,我一步一步地完成了我的會話的設置並開始運行,僅對會話的存儲方式進行了一些修改。

https://medium.com/@evangow/server-authentication-basics-express-sessions-passport-and-curl-359b7456003d

啟動並運行后,可以將if(req.isAuthenticated())插入路由的中間件中,這很有趣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM