簡體   English   中英

Angular 6授權

[英]Angular 6 authorization

如果用戶未登錄並嘗試訪問任何安全URL,則即使該用戶通過瀏覽器的URL欄直接訪問,也不應允許他訪問,並且必須重定向到登錄頁面。

我在這里找到了一個解決方案,它解決了我的問題,但是唯一的事情是,每當用戶嘗試從瀏覽器的URL欄訪問授權URL時,它都會呈現index.html和導航欄組件的內容。

您應該嘗試canActivate。 它將基於啟用路由來標識用戶已登錄。 以下是示例。 為以下創建ts文件。

import { Injectable } from '@angular/core';
import { CanActivate, Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';

@Injectable()
export class UserAuthorised implements CanActivate {

   constructor(private router: Router) { }

   canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
      if (your condition here of if login true) {
         return true;
      } else {
         //redirect to login page.
         this.router.navigate(['/login']);
         return false;
      }
   }
}

將以上條目添加到app.module.ts文件中的提供程序列表中。 現在,您需要在路由文件中提供此類參考。

{ path: 'dashboard', component: DashboardComponent, canActivate: [UserAuthorised] },

上面的操作:如果用戶嘗試直接訪問url,則路由將返回false並將用戶重定向到登錄頁面。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM