Chcemy przechowywać informacje o autoryzacji użytkownika w pliku cookie, które nie powinny zostać utracone po odświeżeniu (F5) przeglądarki.Jak ustawić datę wygaśnięcia pliku cookie w AngularJS
Chcemy, aby zapisać informacje o autoryzacji w „trwałym cookie” w przypadku użytkownik wybrał pole wyboru „Remember Me” w momencie logowania do.
Odpowiedz
Jako @ Vincent-briglia pointed out, istnieje jQuery drop-in, który może być używany jako obejście dopóki $cookie
usługa staje się konfigurowalna - check it out here
Dla 1.4: Jak zauważono w komentarzu tutaj i inni poniżej, jako 1,4, natywne wsparcie cookies kątowej teraz zapewnia możliwość edycji plików cookie:
z powodu 38fbe3ee, $ ciasteczka nie będą już wystawiać właściwości reprezentują aktualny Cooki przeglądarki e wartości. $ cookies nie ankietuje już przeglądarki w celu zmiany plików cookie i nie kopiuje wartości cookie na obiekt $ cookie.
ta została zmieniona, ponieważ odpytywanie jest drogi i spowodowały problemy z właściwości $ Cookies nie synchronizacji poprawnie z rzeczywistych wartości ciasteczek przeglądarki (powód odpytywania pierwotnie dodano, aby umożliwić komunikację między różnymi kartami, ale nie . są lepsze sposoby, aby to zrobić dzisiaj, na przykład localStorage)
nowe API na $ ciasteczka jest następujący:
dostać umieścić getObject putObject getAll usunąć musisz explictly użyć powyższych metod w celu uzyskania dostępu do gruchać kie danych. Oznacza to również, że użytkownik nie może już oglądać właściwości plików $ cookie w celu wykrycia zmian, które wystąpiły w plikach cookie przeglądarki.
Ta funkcja jest potrzebna na ogół tylko wtedy, gdy biblioteka innej firmy była programowo zmieniająca pliki cookie w środowisku wykonawczym. Jeśli polegasz na tej , musisz albo napisać kod, który może zareagować na bibliotekę innej firmy wprowadzając zmiany do plików cookie lub wdrożyć własny mechanizm odpytywania .
Rzeczywistą implementację wykonuje się za pomocą obiektu $cookiesProvider, który można przekazać za pośrednictwem wywołania put
.
1,3 i poniżej: Dla tych z Was, którzy zrobili wszystko, aby uniknąć konieczności ładowania wtyczek jQuery, to wydaje się być miłym zamiennik kątowa - https://github.com/ivpusic/angular-cookie
Świetne rozwiązanie przy użyciu Angulara 1.3 lub niższej. – vegemite4me
Można pójść do angularjs skrypt i zmienić cookie wstawić
poszukiwania self.cookies = function(name, value) {
następnie u może zmienić kod, który dodaje cookie na przykład przez 7 dni
if (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
wiem, że to pytanie jest trochę stary, a już akceptowaną odpowiedź.
Ale nadal obecny problem, z którym walczę (nie dotyczy jQuery lub czystej wersji Javascript).
Tak, po niektórych badań znalazłem to: https://github.com/ivpusic/angular-cookie
który dostarcza się "interfejs" całkiem podobny do $ CookieStore. I pozwala skonfigurować datę wygaśnięcia (wartość i jednostki).
O kątowej natywnym wsparciem w dniu wygaśnięcia dolarów ciasteczka lub $ CookieStore, „oni” aktualizacje obietnica na ten temat na 1,4, spojrzeć na to: https://github.com/angular/angular.js/pull/10530
Będzie to możliwe, aby ustawić datę ważności z $ CookieStore .put (...), co najmniej oni zaproponować ...
EDIT: natknąłem się na "problem" nie można mieszać $ ciasteczka z kanciasty cookie modułowych. Więc jeśli ustawisz plik cookie pod numerem ipCookie(...)
, pobierz go za pomocą ipCookie(...)
, ponieważ z $ cookie zwróci undefined
.
W wersji Angular v1.4 można w końcu ustawić niektóre opcje plików cookie, takie jak wygasanie. Oto bardzo prosty przykład:
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'
Jeśli zaznaczysz pliki cookie po uruchomieniu tego kodu będzie można zobaczyć, że wygaśnięcie zostanie prawidłowo ustawione cookie o nazwie someToken
.
Przedmiotem przekazywane jako trzeci param do funkcji put
powyżej pozwala również inne opcje, takie jak tworzenie path
, domain
i secure
. Sprawdź przegląd the docs.
PS - Na marginesie, jeśli podnosimy głowy, że $cookieStore
została zaniechana, więc $cookies
jest obecnie jedynym sposobem radzenia sobie z cookies. zobacz docs
Jest to możliwe w 1.4.0 build kątowej za pomocą modułu ngCookies
:
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});
}]);
nie jest bardzo jasne z dokumentacji, jeśli '{'wygasa': expireDate});' lub .............................. ........................ '[{'expires': expireDate}]);' format powinien być użyty ... – Serge
chciałbym przedstawić dodatkowy przykład, jak niektórzy ludzie wiedzą dodatkowy czas Żywotność plików cookie. to znaczy. Chcą ustawić plik cookie na 10 minut lub 1 dzień.
Zazwyczaj już wiesz, jak długo ciasteczko potrwa w ciągu kilku sekund.
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});
i można je odzyskać jak zwykle:
var myCookiesValue = $cookies.getObject('myCookiesName');
Jeżeli pusta, zwraca niezdefiniowane.
Łącza;
http://www.w3schools.com/jsref/jsref_obj_date.asp
https://docs.angularjs.org/api/ngCookies/provider/ $ cookiesProvider # domyślnie
Gdzie 'dzisiaj' pochodzić z? –
Starałem się, aby kod był ładniejszy i zapomniałem zmienić wszystkie "teraz jest do dziś. Teraz powinno być w porządku. –
można użyć https://github.com/ivpusic/angular-cookie
najpierw trzeba wstrzyknąć ipCookie do modułu kątowego.
var myApp = angular.module('myApp', ['ipCookie']);
A teraz, na przykład, jeśli chcesz używać go z kontrolerem
myApp.controller('cookieController', ['$scope', 'ipCookie', function($scope, ipCookie) {
// your code here
}]);
Aby utworzyć takie stosowanie tego pliku za
ipCookie(key, value);
Wartość obsługuje napisy, liczby, wartości logiczne, tablice i obiektów i zostaną automatycznie serializowane do pliku cookie.
Można również ustawić dodatkowe opcje, takie jak numer dnia, kiedy plik cookie wygasa
ipCookie(key, value, { expires: 21 });
Na razie używam lokalne przechowywanie i magazynowanie w tym celu sesji Ref http: //people.opera. com/shwetankd/external/demos/webstorage_demo.htm –