Wir möchten die Autorisierungsinformationen des Benutzers in einem Cookie speichern, das beim Aktualisieren (F5) des Browsers nicht verloren gehen sollte.
Wir möchten Autorisierungsinformationen in "Permanent-Cookie" speichern, falls der Benutzer zum Zeitpunkt der Anmeldung das Kontrollkästchen "Angemeldet bleiben" aktiviert hat.
80
Antworten:
Dies ist im 1.4.0-Winkelbau mit dem
ngCookies
Modul möglich:https://docs.angularjs.org/api/ngCookies/service/$cookies
angular.module('cookiesExample', ['ngCookies']) .controller('ExampleController', ['$cookies', function($cookies) { // Find tomorrow's date. var expireDate = new Date(); expireDate.setDate(expireDate.getDate() + 1); // Setting a cookie $cookies.put('myFavorite', 'oatmeal', {'expires': expireDate}); }]);
quelle
{'expires': expireDate});
oder .......................................... ............[{'expires': expireDate}]);
Format sollte verwendet werden ...Für 1.4: Wie im Kommentar hier und in anderen unten erwähnt, bietet Angulars native Cookie-Unterstützung ab 1.4 jetzt die Möglichkeit, Cookies zu bearbeiten:
Die eigentliche Implementierung erfolgt über ein $ cookiesProvider- Objekt, das über den
put
Aufruf übergeben werden kann.Für 1.3 und darunter: Für diejenigen unter Ihnen, die Ihr Bestes getan haben, um das Laden von jQuery-Plugins zu vermeiden, scheint dies ein guter Ersatz für Angular zu sein - https://github.com/ivpusic/angular-cookie
quelle
In Angular v1.4 können Sie endlich einige Optionen für die Cookies festlegen, z. B. den Ablauf. Hier ist ein sehr einfaches Beispiel:
var now = new Date(), // this will set the expiration to 12 months exp = new Date(now.getFullYear()+1, now.getMonth(), now.getDate()); $cookies.put('someToken','blabla',{ expires: exp }); var cookie = $cookies.get('someToken'); console.log(cookie); // logs 'blabla'
Wenn Sie Ihre Cookies nach dem Ausführen dieses Codes überprüfen, werden Sie feststellen, dass der Ablauf ordnungsgemäß auf das genannte Cookie gesetzt wird
someToken
.Das Objekt übergibt als dritten param auf die
put
Funktion erlaubt es oben für andere Optionen , wie gut, wie Einstellungpath
,domain
undsecure
. Überprüfen Sie die Dokumente für eine Übersicht.PS - Als Randnotiz, wenn Sie Mind aktualisieren,
$cookieStore
das veraltet ist,$cookies
ist dies jetzt die einzige Methode, um mit Cookies umzugehen. siehe docsquelle
Ich möchte ein zusätzliches Beispiel vorstellen, da einige Leute die zusätzliche Dauer der Lebensdauer von Cookies kennen. dh. Sie möchten einen Cookie so einstellen, dass er noch 10 Minuten oder 1 Tag länger hält.
Normalerweise wissen Sie bereits, wie lange der Cookie in Sekunden hält.
var today = new Date(); var expiresValue = new Date(today); //Set 'expires' option in 1 minute expiresValue.setMinutes(today.getMinutes() + 1); //Set 'expires' option in 2 hours expiresValue.setMinutes(today.getMinutes() + 120); //Set 'expires' option in (60 x 60) seconds = 1 hour expiresValue.setSeconds(today.getSeconds() + 3600); //Set 'expires' option in (12 x 60 x 60) = 43200 seconds = 12 hours expiresValue.setSeconds(today.getSeconds() + 43200); $cookies.putObject('myCookiesName', 'myCookiesValue', {'expires' : expiresValue});
und Sie können es wie gewohnt abrufen:
var myCookiesValue = $cookies.getObject('myCookiesName');
Wenn leer, wird undefiniert zurückgegeben.
Links;
http://www.w3schools.com/jsref/jsref_obj_date.asp
https://docs.angularjs.org/api/ngCookies/provider/ $ cookiesProvider # Standardeinstellungen
quelle
today
das?$cookies
automatisch undefiniert zurückgeben, wenn der Wert abgelaufen ist?Sie können zum Skript angle.js gehen und die
Suche zum Einfügen von Cookies ändern.
self.cookies = function(name, value) {
Anschließend können Sie den Code ändern, der das Cookie beispielsweise für 7 Tage hinzufügtif (value === undefined) { rawDocument.cookie = escape(name) + "=;path=" + cookiePath + ";expires=Thu, 01 Jan 1970 00:00:00 GMT"; } else { if (isString(value)) { var now = new Date(); var time = now.getTime(); time += 24*60*60*1000*7; now.setTime(time); cookieLength = (rawDocument.cookie = escape(name) + '=' + escape(value) + ';path=' + cookiePath+";expires="+now.toGMTString()).length + 1
quelle
Ich weiß, dass diese Frage etwas alt ist und bereits eine akzeptierte Antwort hat.
Aber immer noch ein aktuelles Problem, mit dem ich zu kämpfen habe (nicht in Bezug auf jQuery oder reines Javascript).
Nach einigen Recherchen habe ich Folgendes gefunden: https://github.com/ivpusic/angular-cookie
Welches liefert eine "Schnittstelle" ziemlich ähnlich wie $ cookieStore. Und erlaubt das Konfigurieren des Ablaufdatums (Wert und Einheiten).
Informationen zur eckigen nativen Unterstützung am Ablaufdatum mit $ cookie oder $ cookieStore. "Sie" versprechen Aktualisierungen zu diesem Thema in Version 1.4: https://github.com/angular/angular.js/pull/10530
Es wird möglich sein, das Ablaufdatum mit $ cookieStore.put (...) festzulegen, zumindest schlagen sie vor, dass ...
BEARBEITEN: Ich habe ein "Problem" festgestellt, dass Sie $ Cookies nicht mit Angular-Cookie Modular mischen können. Wenn Sie also ein Cookie setzen, mit dem Sie es
ipCookie(...)
abrufen, wird esipCookie(...)
mit $ cookie zurückgegebenundefined
.quelle
Wie @ vincent-briglia hervorhob , gibt es ein jQuery-Drop-In, das als Problemumgehung verwendet werden kann, bis der
$cookie
Service konfigurierbar wird - sehen Sie hier nachquelle
Sie können https://github.com/ivpusic/angular-cookie verwenden
Zuerst müssen Sie ipCookie in Ihr Winkelmodul injizieren.
var myApp = angular.module('myApp', ['ipCookie']);
Und jetzt zum Beispiel, wenn Sie es von Ihrem Controller aus verwenden möchten
myApp.controller('cookieController', ['$scope', 'ipCookie', function($scope, ipCookie) { // your code here }]);
Verwenden Sie zum Erstellen eines Cookies
Der Wert unterstützt Zeichenfolgen, Zahlen, Boolesche Werte, Arrays und Objekte und wird automatisch in das Cookie serialisiert.
Sie können auch einige zusätzliche Optionen festlegen, z. B. die Anzahl der Tage, an denen ein Cookie abläuft
ipCookie(key, value, { expires: 21 });
quelle