Queremos almacenar la información de autorización del usuario en una cookie que no debe perderse al actualizar (F5) el navegador.
Queremos almacenar la información de autorización en "cookie permanente" en caso de que el usuario haya optado por la casilla de verificación "Recordarme" en el momento de iniciar sesión.
81
Respuestas:
Esto es posible en la compilación 1.4.0 de angular usando el
ngCookies
módulo: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}); }]);
fuente
{'expires': expireDate});
o .......................................... ............[{'expires': expireDate}]);
formato debe usarse ...Para 1.4: como se indica en el comentario aquí y otros a continuación, a partir de 1.4, el soporte de cookies nativas de Angular ahora brinda la capacidad de editar cookies:
La implementación real se realiza a través de un objeto $ cookiesProvider , que se puede pasar a través de la
put
llamada.Para 1.3 y menos: para aquellos de ustedes que han hecho todo lo posible para evitar tener que cargar complementos de jQuery, este parece ser un buen reemplazo para angular: https://github.com/ivpusic/angular-cookie
fuente
En Angular v1.4 finalmente puede configurar algunas opciones para las cookies, como la caducidad. Aquí tienes un ejemplo muy simple:
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'
Si revisa sus cookies después de ejecutar este código, verá que la caducidad se configurará correctamente para la cookie nombrada
someToken
.El objeto pasado como tercer parámetro a la
put
función anterior permite otras opciones también, como el ajustepath
,domain
ysecure
. Consulte los documentos para obtener una descripción general.PD : como nota al margen, si está actualizando la mente que
$cookieStore
ha quedado obsoleta,$cookies
ahora es el único método para lidiar con las cookies. ver documentosfuente
Me gustaría presentar un ejemplo adicional, ya que algunas personas conocen la duración adicional de la vida útil de las cookies. es decir. Quieren configurar una cookie para que dure 10 minutos más o 1 día más.
Por lo general, ya sabe cuánto más durará la cookie en segundos.
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});
y puedes recuperarlo como de costumbre:
var myCookiesValue = $cookies.getObject('myCookiesName');
Si está vacío, devuelve undefined.
Enlaces;
http://www.w3schools.com/jsref/jsref_obj_date.asp
https://docs.angularjs.org/api/ngCookies/provider/ $ cookiesProvider # defaults
fuente
today
viene$cookies
devuelve automáticamente undefined si el valor está vencido?Puede ir al script angular.js y cambiar la cookie de inserción
búsqueda de para
self.cookies = function(name, value) {
luego cambiar el código que agrega la cookie, por ejemplo, durante 7 díasif (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
fuente
Sé que esta pregunta es un poco antigua y ya tengo una respuesta aceptada.
Pero sigue siendo un problema actual con el que estoy luchando (no con respecto a jQuery o Javascript puro).
Entonces, después de algunas investigaciones, encontré esto: https://github.com/ivpusic/angular-cookie
Lo que ofrece una "interfaz" bastante similar a $ cookieStore. Y permite configurar la fecha de caducidad (valor y unidades).
Acerca del soporte nativo angular en la fecha de vencimiento con $ cookie o $ cookieStore, "ellos" prometen actualizaciones sobre este tema en 1.4, mire esto: https://github.com/angular/angular.js/pull/10530
Será posible establecer la fecha de vencimiento con $ cookieStore.put (...), al menos proponen que ...
EDITAR: Encontré un "problema" que no puede mezclar $ cookies con angular-cookie modular. Entonces, si configura una cookie,
ipCookie(...)
recupérela conipCookie(...)
porque con $ cookie regresaráundefined
.fuente
Como señaló @ vincent-briglia , hay un complemento de jQuery que se puede usar como solución alternativa hasta que el
$cookie
servicio se vuelva configurable; compruébelo aquífuente
Puede utilizar https://github.com/ivpusic/angular-cookie
Primero necesitas inyectar ipCookie en tu módulo angular.
var myApp = angular.module('myApp', ['ipCookie']);
Y ahora, por ejemplo, si quieres usarlo desde tu controlador
myApp.controller('cookieController', ['$scope', 'ipCookie', function($scope, ipCookie) { // your code here }]);
Para crear un uso de cookies
El valor admite cadenas, números, valores booleanos, matrices y objetos y se serializará automáticamente en la cookie.
También puede configurar algunas opciones adicionales, como el número de días en que caduca una cookie
ipCookie(key, value, { expires: 21 });
fuente