Угловая сессия в новой вкладке - PullRequest
0 голосов
/ 23 октября 2018

Я занимаюсь разработкой приложения с Angular (версия 6, с использованием ngx-rocket starter).Я обеспокоен совместным использованием сеансов приложения между вкладками в браузере.Все ответы, которые я нашел, очень старые.Я здесь, чтобы спросить, как правильно справиться с этим (без проблем с безопасностью).

Это решение: https://stackoverflow.com/a/32766809/9172963 работает, но мне не очень нравится идея поместить javascript в index.htmlуглового приложения.Другие решения, такие как, например, Связь между вкладками или окнами недоступна, поскольку приложение должно работать в браузере Edge.

1 Ответ

0 голосов
/ 23 октября 2018

Использование локального хранилища javascript должно быть в порядке, если вы не храните роли и права пользователей.Вам не нужно вставлять javascript в index.html.

Просто создайте службу примерно так:

import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root'
})
export class LocalStorageService {
  public localStorage;
  constructor() { 
    this.localStorage = window.localStorage;
  }


  getObject(key){
    let value = this.localStorage.getItem(key);
    return JSON.parse(value);
  }

  setObject(key, value){
    this.localStorage.setItem(key, JSON.stringify(value));
  }

  get(key){
    return this.localStorage.getItem(key);
  }

  set(key, value){
    this.localStorage.setItem(key,value);
  }

  clear(){
    this.localStorage.clear();
    //console.log("cleared");
  }
}

Затем вы можете сохранить данные на одной вкладке и получить их на другой, используя этуоказание услуг.Только не сохраняйте данные, которые вы не хотите, чтобы пользователь мог изменять, например, роли и права пользователя.Если пользовательский доступ должен быть на разных вкладках, то получите его с сервера с аутентификацией, которую вы использовали бы в одной вкладке в любом случае.

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...