林試圖與令牌過濾器以限制網頁訪問未註冊的用戶在node.js的0.10,我用這樣的中間件:Node.js.如何將頁面訪問限制爲未記錄的用戶?
app.all("/product/*" , handler);
// won't match /product <-- Important
// will match /product/cool
// will match /product/foov
從這個頁面:Express.js Middleware Tutorial,whitout結果,我的所有網頁除登錄頁面是私人的,我想要的是,如果一個未登錄的用戶嘗試去某個私人頁面,他會被重定向到登錄頁面。令牌在登錄時工作得很完美。這是我的代碼:
我的組件樹
server - routes - usuario.js server.js pages - privadas -inicio.html -mapa.html -menu.html - login.html
server.js
var app = express();
...
var requiereLogin = require('./server/routes/usuario');
app.all('/privadas/*', requiereLogin);
...
usuario.js
var express = require('express');
var router = express.Router();
...
router.use(function(req,res,next){
console.log("filter...");
var token = req.headers['auth-token'];
jwt.verify(token, process.env.SECRET, function(err, decoded){
if (err){
res.redirect('/login');
} else {
req.user_id = decoded.IDU;
next();
}
})
});
的app.config
app.config(function($routeProvider){
$routeProvider
.when("/", {
templateUrl: "pages/login.html",
css: ["css/login.css"],
controller: "loginCtrl",
controllerAs: "vm"
})
.when("/privadas/mapa", {
templateUrl: "pages/privadas/mapa.html",
controller: "mapCtrl",
controllerAs: "vm"
})
.when("/privadas/inicio", {
templateUrl: "pages/privadas/inicio.html",
controller: "inicioCtrl",
controllerAs: "vm"
})
.otherwise({redirectTo:'/'});
});
任何想法?謝謝!
我會嘗試使用它,謝謝! ;) –