Ручка неавторизованная 401 с паспортом - PullRequest
0 голосов
/ 22 мая 2018

У меня есть приложение на основе MEAN-стека, и я использую паспорт для обработки входа в систему / выхода из системы и т. Д.

Поэтому, когда токен становится недействительным, и пользователь нажимает ссылку внутри моего приложения,он получает только «Unauthorized» в консоль, которая выглядит следующим образом: enter image description here

Итак, я хочу, чтобы вызывалась функция, которая очищает 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);
            }
        });
    }));
}

1 Ответ

0 голосов
/ 22 мая 2018

Я думаю, вам нужно сделать это в вашем Angular-коде, поскольку пользователь будет взаимодействовать с этим.Вы можете проверить HTTP 401 в своем приложении Angular и, если оно обнаружится, очистить localStorage с помощью localStorage.clear(); и перенаправить пользователя на страницу входа.

...