Angular2 cookie вместо localstorage
Мне удалось сделать все работы JWT auth, никаких проблем нет, но он поддерживает только современные браузеры, и мне нужно, чтобы Auth работал во всех версиях начиная с IE9 и выше.
Я не мог найти никакой информации или примеров, как использовать файлы cookie в Angular2. Существует простой пример использования localStorage для сохранения токена, мне нужна такая же функциональность, но с кукисами.
Любая помощь будет отличной, поскольку в сети нет ничего.
this.http.post("http://localhost:3001/sessions/create", creds, { headers: header })
.map(res => res.json())
.subscribe(
data => localStorage.setItem('id_token',data.id_token),
err => this.logError(err),
() => console.log("Auth is completed!")
);
Ответы
Ответ 1
Простым способом решения этой проблемы является использование этого lib:
https://www.npmjs.com/package/ng2-cookies
Чтобы установить эту библиотеку, запустите:
$ npm install ng2-cookies
Использование:
import { Cookie } from 'ng2-cookies/ng2-cookies';
Cookie.set('cookieName', 'cookieValue');
Cookie.set('cookieName', 'cookieValue', 10 /*days from now*/);
Cookie.set('cookieName', 'cookieValue', 10, '/myapp/', 'mydomain.com');
let myCookie = Cookie.get('cookieName');
/*
* List of cookies as Object, like: { cookieName: "cookieValue", cookieName2: "cookieValue2" ... etc }
*/
let cookielist = Cookie.getAll();
Cookie.delete('cookieName');
Cookie.deleteAll();
Ответ 2
Я реализовал службу cookie с функциями от Angular 1 до Angular 2 в качестве инъекционной службы. Также добавлена функция removeAll
в качестве плюса. Вы можете получить его с помощью:
npm install angular2-cookie --save
После ввода его в качестве службы вы можете использовать методы, как в Angular 1:
this._cookieService.get(key);
this._cookieService.getObject(key);
// Other available methods are
// put(), putObject(), remove() and removeAll()
Вы можете проверить часть readme для примеров и доступных функций.
https://github.com/salemdar/angular2-cookie