У меня есть приложение на основе MEAN-стека, и я использую паспорт для обработки входа в систему / выхода из системы и т. Д.
Поэтому, когда токен становится недействительным, и пользователь нажимает ссылку внутри моего приложения,он получает только «Unauthorized» в консоль, которая выглядит следующим образом:
Итак, я хочу, чтобы вызывалась функция, которая очищает localStorage и перенаправляет его на вход в систему.страница, но я не знаю, где я должен это сделать.Это мой код:
app.js
//Port Number
const port = 3000;
//CORS Middleware
app.use(cors());
//Set static folder
app.use(express.static(path.join(__dirname, 'public')));
// Body Parser Middleware
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ limit: '20mb', extended: false }));
//Passport Middleware
app.use(passport.initialize());
app.use(passport.session());
//Importing Authentication
require('./config/passport')(passport);
app.use('/users', users);
app.use('/terminalType', terminalType);
app.use('/customer', customer);
app.use('/terminal', terminal);
app.use('/stock', stock);
app.use('/logbook', logbook);
app.use('/partner', partner);
app.use('/userrights', userrights);
app.use('/activity', activity);
app.use('/activityRecord', activityRecord);
app.use('/customerContract', customerContract);
app.use('/queenBeeRaces', queenBeeRaces);
app.use('/beecolony', beecolony);
app.use('/beehiveTypes', beehiveTypes);
app.use('/bugTypes', bugTypes);
app.use('/visitReporting', visitReporting);
//Calling Index-Route
app.get('/', (req, res) => {
res.send('Ungültige Route!');
});
app.get('*', (req, res) => {
res.sendFile(path.join(__dirname, 'public/index.html'));
});
//Run server with nodemon
app.listen(port, () => {
console.log('Server started on port '+port);
});
passport.js
const JwtStrategy = require('passport-jwt').Strategy;
const ExtractJwt = require('passport-jwt').ExtractJwt;
const User = require('../models/user');
const config = require('../config/database');
module.exports = function(passport) {
let opts = {};
opts.jwtFromRequest = ExtractJwt.fromAuthHeaderWithScheme("jwt");
opts.secretOrKey = config.secret;
passport.use(new JwtStrategy(opts, (jwt_payload, done) => {
User.getUserById(jwt_payload.data.user._id, (err, user) => {
if(err){
return done(err, false);
}
if(user){
return done(null, user);
} else {
return done(null, false);
}
});
}));
}