Definieren Sie eine Middleware-Funktion, bevor Sie Ihre Routen definieren/einbeziehen. So vermeiden Sie, auf jeder Route nach einer gültigen Sitzung zu suchen. Im folgenden Code finden Sie ein Beispiel dazu.
Wenn einige Routen öffentlich sind, dh sie eine gültige Session keinen Benutzer erfordern haben dann diese definieren, bevor Sie Ihre middlware Funktion
var app = require("express")();
//This is the middleware function which will be called before any routes get hit which are defined after this point, i.e. in your index.js
app.use(function (req, res, next) {
var authorised = false;
//Here you would check for the user being authenticated
//Unsure how you're actually checking this, so some psuedo code below
if (authorised) {
//Stop the user progressing any further
return res.status(403).send("Unauthorised!");
}
else {
//Carry on with the request chain
next();
}
});
//Define/include your controllers
Wie pro Ihre Kommentar ‚Verwendung‘, haben Sie zwei Möglichkeiten mit Bedenken Sie, dass diese Middleware nur einige Routen beeinflusst, siehe unten zwei Beispiele.
Option 1 - Deklarieren Sie Ihre spezifischen Routen vor der Middleware.
app.post("/auth/signup", function (req, res, next) { ... });
app.post("/auth/forgotpassword", function (req, res, next) { ... });
//Any routes defined above this point will not have the middleware executed before they are hit.
app.use(function (req, res, next) {
//Check for session (See the middlware function above)
next();
});
//Any routes defined after this point will have the middlware executed before they get hit
//The middlware function will get hit before this is executed
app.get("/someauthorisedrouter", function (req, res, next) { ... });
Option 2 Definieren Sie Ihre middlware Funktion irgendwo und es erfordern, wo
/middleware.js benötigt
module.exports = function (req, res, next) {
//Do your session checking...
next();
};
Jetzt können Sie es benötigen, wo immer Sie es wollen.
/index.js
var session_check = require("./middleware"),
router = require("express").Router();
//No need to include the middlware on this function
router.post("/signup", function (req, res, next) {...});
//The session middleware will be invoked before the route logic is executed..
router.get("/someprivatecontent", session_check, function (req, res, next) { ... });
module.exports = router;
Hoffnung, dass Sie eine allgemeine Vorstellung davon, wie haben Sie diese Funktion erreichen können.
hey lee das wird lösen, aber es wird auf alle Routen gelten Ich denke, das ist nicht genau das, was ich will, wollte ich es zu bestimmten Routen hinzufügen hinterlassen etwas wie Anmeldung, Passwort vergessen usw. –
Sie haben zwei Möglichkeiten Ja wirklich. Sie können Ihre Anmelde- und Passwort-Routen definieren, BEVOR Sie die Middleware deklarieren, oder Sie können die Middleware-Funktion an alle Routen weitergeben, auf denen sie verwendet werden soll. –
danke das hilft viel –