2017-12-21 3 views
0

Ich muss Trust/Remember-Gerät implementieren, wenn Sie sich auf einer Angular.js-Website anmelden. Das heißt, ich kann wählen, dass ich auf dem Computer und dem Gerät, die ich täglich benutze, kein Passwort und keinen Benutzernamen eingeben muss, aber wenn jemand mein Passwort erhält und versucht, sich auf einem unbekannten Computer oder Gerät anzumelden, muss er das Passwort und den Benutzernamen eingeben Einloggen.So implementieren Sie das Trust/Remember-Gerät in angular.js

+0

Dies ist eine experimentelle Technologie, aber folgen Sie dem Konzept, dass Ihr Kommentar: https://developer.mozilla.org/en-US/docs/Web/API/ Credential_Management_API –

Antwort

0

Es gibt etwas namens document.cookie, das Sie in einer Fabrik verwenden könnten. Ich habe einen Beispielcode gefunden, den Sie möglicherweise verwenden können?

Erstellt ein Cookie (zum Beispiel dieses in einem Jahr ausläuft):

app.factory('$remember', function() { 
    return function(name, values) { 
    var cookie = name + '='; 

    cookie += values + ';'; 

     var date = new Date(); 
     date.setDate(date.getDate() + 365); 

     cookie += 'expires=' + date.toString() + ';'; 

     document.cookie = cookie; 
    } 
}); 

Diese Fabrik entfernt den Cookie:

app.factory('$forget', function() { 
    return function(name) { 
    var cookie = name + '=;'; 
    cookie += 'expires=' + (new Date()).toString() + ';'; 

    document.cookie = cookie; 
    } 
}); 

dann, wenn ein Benutzer erfolgreich im Cache meldet den Schlüssel $ mit erinnern

$remember('my_cookie_name', response.user._id); 

Und immer überprüfen, ob der Cookie dort ist, wenn sich der Benutzer sonst anmeldet Verwenden Sie eine Standardanmeldung und speichern Sie sie in ihren Cookies. Wenn die Erinnerung mich nicht aktiviert ist, vergessen Sie den Dokument.cookie

+0

Danke für Ihre Antwort. Wenn jemand den user._jd errät und den Cookie über die Browser-Konsole setzt, kann er sich auf der Website anmelden, richtig? Wie kann man eine solche Situation verhindern? Danke – mengzhen

+0

Vielleicht habe ich die Frage missverstanden. Haben Sie gefragt, wie Sie "remember me" festlegen können, um Ihren Benutzernamen und Ihr Passwort festlegen zu lassen, oder auth, um sich anzumelden? Normalerweise benutze ich einen JWT in einem Knoten und lasse jeden einzelnen Endpunkt (mit Ausnahme des anfänglichen Anmeldeendpunkts, der den Benutzernamen und das Passwort überprüft) eine Funktion namens "ensureAuthenticated" ausführen, bevor er getroffen wird und die Gültigkeit eines Tokens überprüft. Wenn das Token noch gültig ist, wird es next() ausgeführt und trifft den Endpunkt. Wenn das Token nicht gültig ist oder kein Token vorhanden ist, werden sie zum Anmeldebildschirm weitergeleitet. Und kein Problem! Ich hoffe, ich kann helfen, haha ​​ – joshbang

+0

Auch wenn sie sich anmelden, entweder aktualisiert oder erstellt eine neue JWT. Meine "ensureAuthenticated" -Funktion aktualisiert auch das Token, um länger zu dauern, also wird es nicht ausgehen, während sie die Site benutzen. Und da ich diese Funktion auf jedem Endpunkt ausführe, wird das Token während der Verwendung ständig erneuert. Wenn Sie einige Beispiele meiner JWT-Funktion haben wollen, lassen Sie es mich wissen – joshbang

Verwandte Themen