Passport Log Out重定向到登录页面

时间:2018-05-23 23:22:34

标签: node.js express authentication jwt passport.js

我有一个文件routes.js。像:

var config = require('../Config/Config');

module.exports = (app, passport) => {
var user = require('../routes/userRoute.js');
var autho = require('../routes/authoRoute.js');
var photos = require('../routes/photoRoute.js');
var department = require('../routes/departmentRoute.js');
var testroom = require('../routes/test_roomRoute.js');
var elementtype = require('../routes/element_typeRoute.js');
var element = require('../routes/elementRoute.js');
var equipment = require('../routes/equipmentRoute.js');
var template = require('../routes/templateRoute.js');
var status = require('../routes/statusRoute.js');
var periodicity = require('../routes/periodicityRoute.js');
var wocortype = require('../routes/wo_cor_typeRoute.js');
var type = require('../routes/typeRoute.js');
var company = require('../routes/companyRoute.js');
var client = require('../routes/clientRoute.js');
var role = require('../routes/roleRoute.js');
var wo = require('../routes/woRoute.js');
var woCorrective = require('../routes/woCorrectiveRoute.js');
var woPreventive = require('../routes/woPreventiveRoute.js');
var dailyInfo = require('../routes/dailyInfoRoute');
var woOperation = require('../routes/woOperationRoute.js');
var manufacturer = require('../routes/manufacturerRoute.js');
var sparePart = require('../routes/sparePartRoute.js');
var document_ = require('../routes/documentRoute.js');
var sparePartElement = require('../routes/sparePartElementRoute.js');
var sparePartRequest = require('../routes/sparePartRequestRoute.js');
var logFrontEnd = require('../routes/logRoute.js');
/**
 * Routes for the application
 */

app.use(config.mainRoute.route, autho(passport));
app.use(config.mainRoute.route, passport.authenticate('jwt', { session: false }), user(passport));
app.use(config.mainRoute.route, status(passport));
app.use(config.mainRoute.route, passport.authenticate('jwt', { session: false }), department(passport));
app.use(config.mainRoute.route, passport.authenticate('jwt', { session: false }), testroom(passport));
app.use(config.mainRoute.route, passport.authenticate('jwt', { session: false }), photos(passport));
app.use(config.mainRoute.route, passport.authenticate('jwt', { session: false }), elementtype(passport));
app.use(config.mainRoute.route, passport.authenticate('jwt', { session: false }), element(passport));
app.use(config.mainRoute.route, passport.authenticate('jwt', { session: false }), equipment(passport));
app.use(config.mainRoute.route, passport.authenticate('jwt', { session: false }), template(passport));
app.use(config.mainRoute.route, passport.authenticate('jwt', { session: false }), status(passport));
app.use(config.mainRoute.route, passport.authenticate('jwt', { session: false }), periodicity(passport));
app.use(config.mainRoute.route, passport.authenticate('jwt', { session: false }), wocortype(passport));
app.use(config.mainRoute.route, passport.authenticate('jwt', { session: false }), type(passport));
app.use(config.mainRoute.route, passport.authenticate('jwt', { session: false }), company(passport));
app.use(config.mainRoute.route, passport.authenticate('jwt', { session: false }), client(passport));
app.use(config.mainRoute.route, passport.authenticate('jwt', { session: false }), role(passport));
app.use(config.mainRoute.route, passport.authenticate('jwt', { session: false }), wo(passport));
app.use(config.mainRoute.route, passport.authenticate('jwt', { session: false }), woCorrective(passport));
app.use(config.mainRoute.route, passport.authenticate('jwt', { session: false }), woPreventive(passport));
app.use(config.mainRoute.route, passport.authenticate('jwt', { session: false }), woOperation(passport));
app.use(config.mainRoute.route, passport.authenticate('jwt', { session: false }), dailyInfo(passport));
app.use(config.mainRoute.route, passport.authenticate('jwt', { session: false }), manufacturer(passport));
app.use(config.mainRoute.route, passport.authenticate('jwt', { session: false }), sparePart(passport));
app.use(config.mainRoute.route, passport.authenticate('jwt', { session: false }), document_(passport));
app.use(config.mainRoute.route, passport.authenticate('jwt', { session: false }), sparePartElement(passport));
app.use(config.mainRoute.route, passport.authenticate('jwt', { session: false }), sparePartRequest(passport));
app.use(config.mainRoute.route, passport.authenticate('jwt', { session: false }), logFrontEnd(passport));
};

如何在会话过期后退出?...或者我必须在我的路线中...

var express = require('express');
var router = express.Router();
var dailyInfoController = require('../Controllers/dailyInfoController');

 var APIRoutes = function (passport) {
/* GET request for one wo. */
// router.get('/dailyInfo', dailyInfoController.read);

/* GET request for list of all wos. */
router.get('/dailyInfo/:codDailyInfo', dailyInfoController.readDetail);

/* GET request for list of all wos. */
router.get('/dailyInfo/WO/:codWO', dailyInfoController.readDetailWO);

// Get the active Daily Info
router.get('/dailyInfo/Active/:codWO', dailyInfoController.readActiveWO);

/* POST request for creating wo. */
router.post('/dailyInfo/', dailyInfoController.create);

// POST request to delete wo
router.delete('/dailyInfo/:codDailyInfo', dailyInfoController.delete); 

return router;
};
module.exports = APIRoutes;

我确定我的会话已过期,因为我在Chrome的控制台中阅读了如下消息:GET http://localhost:3001/api/testRoom 401(未经授权),而我的网页是空的,因为没有来自后端。 所有安全都没问题,但我需要重定向到登录页面:/ login

1 个答案:

答案 0 :(得分:0)

解决方案是app.js中的拦截器

angular.module('frontEndApp').config(['$provide', '$httpProvider', function ($provide, $httpProvider) {
$provide.factory('unauthorisedInterceptor', ['$q', function ($q) {
    return {
        'responseError': function (rejection) {
            if (rejection.status === 401) {
                window.location.href = '/#/login';
            }

            return $q.reject(rejection);
        }
    };
}]);

$httpProvider.interceptors.push('unauthorisedInterceptor');

}]);