0

我正在制作一个简单的平均身份验证应用程序,其中 angular2-jwt 用于对登录的用户进行身份验证,现在,我希望在登录之前,我不希望仪表板、个人资料显示在导航栏上,而在登录后,注册和登录应该被隐藏,所以我 angular2-jwt,但它不能正常工作,我正在分享下面的代码。 想在登录前隐藏仪表板、个人资料

这是我正在使用的导航栏的代码

      <ul class="nav navbar-nav navbar-right">
    <li *ngIf="authService.loggedIn()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}">
      <a [routerLink]="['/dashboard']">Dashboard</a>
    </li>
    <li *ngIf="!authService.loggedIn()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}">
      <a [routerLink]="['/profile']">Profile</a>
    </li>
    <li *ngIf="!authService.loggedIn()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}">
      <a [routerLink]="['/login']">Login</a>
    </li>
    <li *ngIf="authService.loggedIn()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}">
      <a [routerLink]="['/register']">Register</a>
    </li>
    <li>
      <a *ngIf="authService.loggedIn()" (click)="onLogoutClick()" href="#">Logout</a>
    </li>
  </ul>

这是我做的服务

     loggedIn(){
return tokenNotExpired();

}

但是在使用它时,它最初隐藏了 Dashboard、Profile 和 Logout,但即使在登录后,这三个链接也被隐藏,并且不显示:

仍然没有显示,即使我已登录

我正在使用本指南:https ://github.com/auth0/angular2-jwt#checking-authentication-to-hideshow-elements-and-handle-routing

4

1 回答 1

0

这里的问题是,由于您tokenNotExpired返回一个令牌,因此您不能直接在函数上使用 ngIf,因为它适用于布尔值,请按如下方式更改您的函数,

loggedIn(){
  if(tokenNotExpired() != null){
    return true;
  }
  return false;
}
于 2018-01-27T18:11:53.623 回答