2016-08-15 3 views
0

Ich versuche, eine Möglichkeit zu finden, eine Reihe von Admin CRM-Seiten zu sichern, die eine Meteor-Anwendung, an der ich arbeite, steuern. Es gibt nur eine Codebasis, bei der der Server, die Website für den Kunden und die Website für den Administrator in einem Projekt enthalten sind.Meteor: Ich brauche einen einfachen Ansatz für Admin CRM

Ich brauche eine Login-Seite, die einen Benutzernamen und ein Passwort-Paar überprüfen kann, und eine einfache Möglichkeit, den Status des Benutzers auf der Client- und Server-Seite zu überprüfen. Ich brauche auch einen Weg der Admin-Autorisierung, wenn es für x Minuten nicht verwendet wurde.

Ich habe mir das Meteorkonto-Paket angeschaut und es ist einfach viel zu viel Fluff für das, was ich brauche. Diese Website wird immer nur einen Admin-Benutzer haben, daher wird es nur einen Satz von Admin-Nutzernamen und Passwort zum Speichern geben. Ich möchte nicht, dass es in der Datenbank gespeichert wird, sondern beim Start der Anwendung mit einer Einstellungsdatei auf dem Server geladen wird. Es benötigt keine Rollen, E-Mails und Funktionen zum Zurücksetzen des Passworts.

Irgendwelche Empfehlungen für ein Paket oder Ansatz könnte ich verwenden, um dies zu implementieren?

Antwort

1

Ich weiß, dass Sie gesagt haben, dass das accounts: password-Paket ein wenig "Overkill" erschien, aber in Wirklichkeit ist es wirklich nicht. Was Sie dort gewinnen, ist eine plugbare Benutzeroberfläche (über accounts-ui und andere Pakete, die es aufbauen). Der Ansatz, den ich gewählt habe, ist dies (was auch für Apps, die mehrere Benutzer unterstützen, gut funktioniert, da Sie Ihre Startbenutzer letztendlich noch starten müssen).

Zuerst verwende ich eine Kombination von Konten: Passwort und Alanning: Rollen. Wenn Sie den Rollenanteil absolut nicht benötigen, könnten Sie wahrscheinlich ohne ihn davonkommen, aber in all meinen persönlichen Fällen habe ich es als nützlich empfunden, mehrere ACL-Stufen für die verschiedenen Benutzer zu haben. Wir könnten eine ganze philosophische Diskussion über die Verwendung von Rollen/Gruppen führen, um einzelne Features zu sperren, aber das ist ein Thema für diese Diskussion.

Als nächstes müssen Sie die Benutzer booten. Irgendwo in Ihrem /server Ordner tun Sie so etwas wie:

if (Meteor.users.find({}).count() == 0) { 
    // No users created...create default users 
    Accounts.createUser({ 
    username: 'myuser', 
    email: '[email protected]', 
    password: 'myp4ssw0rd!', 
    profile: { profileProp: 'propVal` } 
    }); 
    // Add new user to whatever roles needed 
} 

Es gibt einige Dinge, die ich hier in der Regel tun, wie zu überprüfen, ob meine Rollen vorhanden sind, und wenn nicht, schaffen sie, bevor ich versuche, um die Benutzer zu handhaben , aber der Schlüssel hier ist, das zu tun, wenn der Server startet.

Sobald Sie Ihre Benutzer und Rollen erstellt haben, müssen Sie die Benutzer/Rollen in Ihrer App überprüfen/überprüfen. Bei Menüeinträgen können Sie Inhalte anzeigen/ausblenden, je nachdem, ob der Benutzer angemeldet ist und/oder eine bestimmte Rolle innehat, und Sie sollten in Ihrer Anwendung auch Routen überprüfen, die ACLs erfordern, z. B. Ihre Administratorroute. Verwenden Sie außerdem die Nutzer-ID in allen Ihren Publikationen, um die Daten zu begrenzen, die Ihre Nutzer sehen können. Verlassen Sie sich nicht nur darauf, eine Menüoption zu verstecken ... Sicherheit durch Dunkelheit funktioniert einfach nicht.

Warum schlage ich vor, es so zu machen? Erstens, es ist wirklich nicht so viel Code. Sie könnten dies buchstäblich in maximal 20 Zeilen tun und eine vollständige Authentifizierung einrichten. Und der Nutzen dieser Codezeilen überwiegt die 30-Minuten-Spitze, die Sie benötigen, da Sie jetzt eine "echte" Benutzerauthentifizierung in Ihrer App haben und die Möglichkeit haben, Dinge wie OAuth zu tun, wenn Sie sich jemals dazu entscheiden. Am wichtigsten ist jedoch, dass Sie vordefinierte UI-Plug-ins, die Sie nicht programmieren müssen, sowie integrierte und Add-On-Methoden zum Überprüfen von ACLs und zum Sperren von Daten nach Benutzern freischalten können, ohne dass Sie dies versuchen müssen Implementieren Sie Ihre eigene Lösung.

+0

Fair genug, das sind ein paar gute Argumente –

Verwandte Themen