我已经成功使用受保护的路由在angular 7中创建了一个登录页面,现在,如果用户尝试使用正确的凭据登录,它将重定向到仪表板组件,并且如果凭据为假,它将仅在登录时显示一条消息“ Invalid login”组件本身。
现在如何配置用户是否通过浏览器URL直接浏览到受保护的组件? 当前,它仅显示空白页面,而无法访问受保护的路由。
答案 0 :(得分:1)
您必须使用Authguard保护您的路由。
在路由器模块文件中,您必须具有以下内容:
canActivateChild: [AuthGuard],
在AuthGuard文件中,您应该检查令牌,如果用户具有有效的令牌,那么他/她可以到达该路由,如果没有,则可以将其重定向到登录页面。
AuthGuard文件应如下所示:
import { Injectable } from '@angular/core';
import {ActivatedRouteSnapshot, CanActivateChild, RouterStateSnapshot} from
'@angular/router';
import { Router } from '@angular/router';
import {Observable} from 'rxjs/internal/Observable';
import {LocalDataService} from '../services/local-data.service';
import {SessionStorage} from 'ngx-webstorage';
@Injectable()
export class AuthGuard implements CanActivateChild {
@SessionStorage('token')
public token;
canActivateChild(route: ActivatedRouteSnapshot,
state: RouterStateSnapshot
): Observable<boolean> | Promise<boolean> | boolean {
if(this.token){
return true;
}
this.router.navigate(['auth/login']);
return false;
}
}
答案 1 :(得分:0)
您需要先预订Router事件。 写
//Need something that executes these if statements at random
int random=ThreadLocalRandom.current().nextInt(1,5);
switch(random)
{
case 1:
//Searching one block down
if ( searchPath( maze, x - 1, y, path ) )
{
path.add( new Point( x, y ) );
return true;
}
break;
case 2:
//Searching one block up
if ( searchPath( maze, x + 1, y, path ) )
{
path.add( new Point( x, y ) );
return true;
}
break;
case 3:
//Searching one block left
if ( searchPath( maze, x, y - 1, path ) )
{
path.add( new Point( x, y ) );
return true;
}
break;
case 4:
//Searching one block right
if ( searchPath( maze, x, y + 1, path ) )
{
path.add( new Point( x, y ) );
return true;
}
break;
}
在您的应用程序组件的构造函数中。 这将检测所有URL更改以及直接路由更改。在subscription方法中,编写您的逻辑