2016-05-04 9 views
0

Ich habe eine Sails.js Anwendung, die Benutzer zu /dashbaord umleitet, nachdem ich mich über die /login Seite eingeloggt habe.Umleiten bereits eingeloggter Benutzer in Sails

Was ich möchte ist, automatisch an /dashboard Benutzer umzuleiten, die bereits eingeloggt sind und versuchen, auf jede Seite zuzugreifen, sei es die Homepage oder andere.

Wie kann ich das in Sails erreichen?

Antwort

1

Ich erreichte, was ich wollte, dank Ron Smith und Bonanza.

Aus irgendeinem Grund req.session.authenticatedundefined war, als die Politik von einer Route aufrufen, hier so meine api/policies/forceDashboard.js ist:

module.exports = function(req, res, next) { 
    if (req.user) { 
     return res.redirect('/dashboard'); 
    } 

    return next(); 
}; 

Dann wird, wie Bonanza, mich zu beraten, fügte ich die Politik auf den Strecken in config/routes.js:

1

Der einfachste Weg, an den ich ohne weitere Informationen denken könnte wäre, eine Richtlinie zu erstellen und diese Richtlinie dann auf alle relevanten Controller und Aktionen anzuwenden. Ein mögliches Beispiel:

// api/policies/forceDashboard.js 
module.exports = function(req, res, next) { 
    if (req.session.authenticated) { 
    return res.redirect('/dashboard'); 
    } 

    return next(); 
}; 

// config/policies.js 

module.exports.policies = { 
    '*': 'forceDashboard', 

    'DashboardController': { 
    'find': 'sessionAuth', 
    '*': 'forceDashboard' 
    } 
}; 
+0

Das scheint nicht zu funktionieren ... Tatsächlich habe ich bereits eine 'isAuthenticated'-Richtlinie, die die Benutzer zu '/ login' umleitet, wenn sie nicht authentifiziert sind, und zu'/dashboard'. Und ich habe die folgende Richtlinie: '*': ['isAuthenticated'], aber es scheint nicht ausgelöst werden beim Laden einer statischen Seite wie '/' oder '/ login'. – Bertrand

+0

@ Bertrand31 Aber Sie haben Controller für diese Seiten '' '' '' '' ''/'login' ''? Wenn ja, füge einfach diese Richtlinien hinzu und es wird gut gehen. – Bonanza

+0

Ich habe keinen Controller für '/', und '/ login's Controller wird nur beim POST-Daten ausgelöst. Da sie beide statische Seiten sind, benötigen sie keine Controller. Vielleicht muss ich diesen Seiten Controller hinzufügen? Gibt es keinen saubereren Weg? – Bertrand