В моем небольшом проекте 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 не спрашивает имя пользователя и пароль и непосредственно аутентифицировал пользователя. Я хочу, чтобы пользователю снова предлагалось вводить имя пользователя и пароль каждый раз, когда он будет входить в систему после того, как выйдет из своей учетной записи из моего приложения.