2017-07-18 2 views
0

ich eine Funktion erstellt haben, zu überprüfen, ob ein Benutzer authentifiziert wird oder nicht mag: -Express.js einfache Authentifizierung - localhost umgeleitet Sie zu oft

app.use(compression({threshold:1})); 
app.use(logger('dev')); 
app.use(session({ 
    secret:'node.js app', 
    resave:false, 
    saveUninitialized:true, 
    cookie:{secure:true} 
})) 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(cookieParser()); 
app.use(express.static(path.join(__dirname, 'public'))); 
function CheckAuth(req,res,next){ 
    if(!req.session.authenticated){ 
    res.redirect('/users/login'); 
    return; 
    } 
next(); 
} 

Und als Middleware verwendet

app.use(CheckAuth);

aber die Funktion läuft mehrfach und mehrfach umgeleitet und stoppt das Laden der Seite.

Antwort

1

Sie müssen viele Umleitungen, weil die Middleware läuft auch in /users/login Sie, dass in der Middleware-Funktion, um Ihre Check hinzufügen sollten.

function CheckAuth(req,res,next){ 
    if(!req.session.authenticated && req.url != '/users/login'){ 
    res.redirect('/users/login'); 
    return; 
    } 
next(); 
} 
+0

Dank thats gelöst mein Problem :) –

+1

Froh, Ihnen zu helfen! – nicowernli

1

Sie haben die Middleware für alle Routen verwendet, sodass die Umleitung für immer läuft.

Sie müssen also angeben, welche Route explizit geschützt werden muss. Der Code kann etwas in der Art sein:

//routes without auth guard 
app.post('/users/login', login); 
app.post('/users/register', register); 

//routes guarded by auth 
app.get('/api/xxx', CheckAuth, xxx); 
app.post('/api/yyy', CheckAuth, yyy); 
+0

Danke .... :) Es funktioniert jetzt –

Verwandte Themen