Выход из системы не работает с использованием пакета nforce для salesforce с Node Js - PullRequest
0 голосов
/ 03 февраля 2020

В моем небольшом проекте Node Пользователь может войти через учетную запись salesforce, после чего он может получить доступ к домашней странице. Я использую пакет nforce для использования Salesforce API в моем проекте. пользователь может войти в систему с учетной записью salesforce, но когда он вышел из системы, я хочу, чтобы они повторно вводили имя пользователя и пароль своих salesforce, когда они снова войдут в систему, но даже после очистки cookie, сеанса, отмените токен все во время выхода из системы, пользователь по-прежнему Пользователь уже вошел в систему Salesforce, и он может получить доступ к моему приложению, так как Salesforce может получить какой-либо пользовательский ключ ранее зарегистрированного пользователя и аутентифицировать пользователя. См. Мой код ниже -

var express = require('express');
var nforce = require('nforce');
var path = require('path');
const session = require('express-session');
const bodyParser = require('body-parser');
var cookieParser = require('cookie-parser');
var logger = require('morgan');

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var dashboardRouter = require('./routes/dashboard');

var app = express();
var sess;

const dotenv = require('dotenv');
dotenv.config();

//initialize session
app.use(session({ secret: 'S3CRE7', resave: true, saveUninitialized: true }));

//bodyParser
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: true }))

var org = nforce.createConnection({
    clientId: process.env.SF_CLIENTID,
    clientSecret: process.env.SF_CLIENTSECRET,
    redirectUri: process.env.sf_redirectUri,
    apiVersion: 'v44.0',//'v27.0', 
    environment: 'production',
    mode: 'multi', 
    autoRefresh: true,
    onRefresh: function (newOauth, oldOauth, cb) {
        console.log("newOauthhere", newOauth);
    }
});

app.get('/auth/login', function (req, res) {
    res.redirect(org.getAuthUri());
});

var oauth;
app.get('/token', function (req, res) {
    const code = req.query.code;
    sess = req.session;
    org.authenticate({ code: code }, function (err, resp) {
        if (!err) {
            oauth = resp;
            sess.oauth = resp;
            sess.org = org;
            req.session.token = resp.access_token;
            res.redirect('/dashboard/success');
        } else {
            console.log('Error: ' + err.message);
            res.redirect('/failed');
        }
    });
});

app.get('/logout', function (req, res) {
    org.revokeToken(req.session.token, function (err, response) {
        if (err) {
            return res.end(err.message || err)
        }

        let cookie = res.cookie;
        for (var prop in cookie) {
            res.cookie(prop, '', { expires: new Date(0) });
        }
        res.clearCookie();
        return res.end(response)
    });
});

мой /auth/login маршрут и /token маршрут работают гладко, и пользователь успешно прошел аутентификацию, но когда он вышел из системы, и снова войдите в систему, затем salesforce не спрашивает имя пользователя и пароль и непосредственно аутентифицировал пользователя. Я хочу, чтобы пользователю снова предлагалось вводить имя пользователя и пароль каждый раз, когда он будет входить в систему после того, как выйдет из своей учетной записи из моего приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...