>

Angular2-JWT에는 localStorage에 저장된 로깅 된 사용자 토큰을 기반으로 링크를 표시/숨기기 위해 사용해야하는 특정 기능이 있습니다.

tokenNotExpired ();

내비게이션 링크 IF 토큰이 localStorage에 있지만 작동하지 않는 것을 보여주는 조건문을 구현하는 다른 방법을 찾고 있습니다.

import { Injectable } from '@angular/core';
 import {Http, Headers} from '@angular/http';
 import 'rxjs/add/operator/map'
 import { BehaviorSubject } from 'rxjs/BehaviorSubject';
 import { HttpClientModule } from '@angular/common/http';
 import { CanActivate} from '@angular/router';
 import {FlashMessagesModule} from 'angular2-flash-messages';
 import { JwtModule } from '@auth0/angular-jwt';
 @Injectable()
 export class AuthService{
   authToken:null;
   user:any;
    isLoggedin: boolean = false;
   constructor(private http:Http) { }

   isLoggedIn() {
     if (localStorage.getItem("id_token") == null) {
         this.isLoggedin = false;
         console.log(this.isLoggedIn);
         return this.isLoggedin;
     }
     else {
       console.log(this.isLoggedIn);
         return true;
     }
   }

왜 제대로 작동하지 않는지 알 수 없습니다. 어쩌면 뭔가 빠졌을 수도 있습니다.

<ul class="nav-l" NgClass="{'invisible':isLoggedIn()===true}">
  <li class="nav-link" NgIf="isLoggedIn()"  [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}"><a [routerLink]="'/home'">Home</a></li>
  <li class="nav-link" NgIf="isLoggedIn()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}"><a [routerLink]="'/about'">About</a></li>
  <li class="nav-link" NgIf="isLoggedIn()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}"><a [routerLink]="'/feature'">Features</a></li>
  <li class="nav-link" NgIf="isLoggedIn()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}"><a [routerLink]="'/contact'">Contact</a></li>

위의 HTML에서 두 가지 다른 방법 (NgClass 조건 및 NgIf 조건)을 숨기려고 시도했습니다.

  • 답변 # 1

    예를 들어 어떤 스키마가 자주 바뀌는 지 아는 것이 중요하다. 사용자, 회사 또는 프로젝트 ...

    스키마가 자주 변경되지 않는 경우 스키마를 부모 스키마에 포함 할 수 있지만 조작하기가 너무 어려운 데이터를 포함 할 수 있습니다. 그렇지 않으면 ID를 새 필드에 포함 할 수 있습니다.

    UserSchema가 자주 변경되면 자식 참조를 사용할 수 있습니다.

    const CompanySchema = mongoose.Schema({
        name: {
            type: String
        },
        ....
        userIds: [1, 2, 3]
    })
    
    

    회사 스키마가 자주 변경되는 경우 참조하는 부모 또는

    const UserSchema = mongoose.Schema({
        name: {
            type: String
        },
        ....
        companyId: 1
    })
    
    

    이 회사에서 companyId는 null 가 될 수 있습니다 .

    이것이 도움이 되었기를 바랍니다.

관련 자료

  • 이전 입력으로 단어 (소문자)를 요청하고 단어를 Pig Latin로 변환하는 Python 프로그램 작성
  • 다음 angular - 목록 변경의 영향을받는 항목 만 반환하는 valueChanges ()