salwa
salwa

Reputation: 41

Where to store the current user besides LocalStorage in angular 9?

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

Answers (1)

Arun Saini
Arun Saini

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

Related Questions