Ich habe eine App mit Feathers erstellt. Ich benutze diese App für eine Weile. Es hostet erfolgreich einen Blog und einige andere Webseiten. Allerdings habe ich jetzt einen Punkt erreicht, an dem ich einige meiner Routen schützen muss. Ich möchte zum Beispiel eine Route für meine administrativen Aktivitäten (/ admin) haben, möchte aber nur bestimmten Benutzern Zugriff gewähren. Ich weiß, dass ich die authentication und Autorisierungskomponenten verwenden muss. Zu diesem Zeitpunkt bleibe ich jedoch bei der Autorisierung stecken. Mein Ziel ist die Authentifizierung mit OAuth über Google. Um jedoch meine Authentifizierungsherausforderung zu überwinden, würde ich mich freuen, wenn ich nur einen fest codierten Benutzernamen/ein Passwort verwende, nur um die Route /admin
gesperrt zu bekommen (nein, sie wird nicht bereitgestellt).Federn - Authentifizierung und Autorisierung
Im Moment, ich habe
const app = feathers();
const routes = require('./routes');
app.configure(configuration(path.join(__dirname, '..')));
app.use(compress())
.options('*', cors())
.use(cors())
.use(favicon(path.join(app.get('public'), 'favicon.ico')))
.use('/public', serveStatic(app.get('public'), staticFileSettings))
.use(bodyParser.json())
.use(bodyParser.urlencoded({ extended: true }))
.configure(routes)
.configure(hooks())
.configure(rest())
.configure(socketio())
.configure(services)
.configure(middleware)
.configure(authentication())
;
// Setup the authentication strategy.
app.authenticate({
type: 'local',
'email': '[email protected]',
'password': 'admin'
}).then(function(result){
console.log('Authenticated!', result);
}).catch(function(error){
console.error('Error authenticating!', error);
});
Mein Problem ist, sobald ich den Code-Block mit den app.authenticate Sachen hinzufügen, ich erhalte eine Fehlermeldung, wenn ich meine app starten. Der Fehler sagt:
TypeError: app.authenticate is not a function
Wenn ich entfernen app.authenticate(...);
Meine app beginnt in Ordnung, aber nichts ist gesperrt. In meiner ./routes/index.js Datei, die ich habe:
app.use('/admin', function(req, res) {
res.render('admin/index.html', {});
});
Which, macht gut. Es ist nicht nur auf einen authentifizierten und autorisierten Benutzer beschränkt. Was vermisse ich? Bei einem bloßen Minimieren versuche ich zu verstehen, wie ich über den app.authenticate
Fehler hinaus komme.
Was versuchen Sie zu tun? 'app.authenticate' ist nur auf dem Client verfügbar (' feaths-authentication/client'). – Daff
Letztendlich versuche ich zu verhindern, dass unautorisierte Benutzer auf die Ansicht auf der Route '/ admin' zugreifen. Nach meinem Verständnis muss ich zwei Dinge tun: 1) den Benutzer authentifizieren (ich möchte dies über den OAuth-Login von Google tun) und 2) den Benutzer autorisieren. Die obige Frage erklärt, wie ich auf # 1 feststecke. – Gary