Reputation: 41
In an angular 9 application, I need to get the currentuser after login and store it somewhere to get it even after hard refresh.
I had implemented a sharedservice with a beshaviorSubject to store the current user but after hard refresh the data was gone, so I was forced to use localstorage/session storage.
I don't know if there is a more secured way to store the currentuser so it won't disappear after refresh?
Thanks.
Upvotes: 1
Views: 736
Reputation: 7824
Apart from LocalStorage, cookie is an option to store users.
You can use any third-party lib to implement it or implement your own function to get and set a cookie.
1. Using third party lib:
Install this package: npm install ngx-cookie-service --save
and use as follows:
import { CookieService } from 'ngx-cookie-service';
constructor( private cookieService: CookieService ) { }
ngOnInit(): void {
this.cookieService.set( 'name', 'Test Cookie' ); // To Set Cookie
this.cookieValue = this.cookieService.get('name'); // To Get Cookie
}
2. Implementing own methods to set and get cookie
function setCookie(name,value,days) {
var expires = "";
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days*24*60*60*1000));
expires = "; expires=" + date.toUTCString();
}
document.cookie = name + "=" + (value || "") + expires + "; path=/";
}
function getCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function eraseCookie(name) {
document.cookie = name +'=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
}
and use it as follows:
setCookie('ppkcookie','testcookie',7);
var x = getCookie('ppkcookie');
if (x) {
// [do something with x]
}
Upvotes: 2