【发布时间】:2018-12-10 18:38:41
【问题描述】:
我正在制作 Angular 7 应用程序,我正在通过路由器和身份验证保护进行重定向..
HTML:
<p *ngIf="showUserRoute">
<a [routerLink]="['/user']">User</a>
</p>
<p><a [routerLink]="['/login']">Logout</a></p>
在这里你可以看到一个ngIf,
<p *ngIf="showUserRoute">
<a [routerLink]="['/user']">User</a>
</p>
ts:
ngOnInit() {
let user = JSON.parse(localStorage.getItem('currentUser'));
console.log(user.token);
if(user.token == "fake-jwt-token") {
this.showUserRoute = false;
}
}
这里如果user.token == "fake-jwt-token" 那么我不应该允许用户导航到user url..
它现在隐藏了网址,没问题..
问题是即使<a [routerLink]="['/user']">User</a> 处于隐藏状态,用户可以手动更改网址,因此如果他将网址设为类似,
最后在url中添加用户
https://angular-6-jwt-authentication-example-tsu2sm.stackblitz.io/user,它正在重定向到用户页面..
我的要求是,如果用户像上面那样更改 url,则不应允许,并且重定向需要发生在以前的状态..
您可以探索正在工作的 stackblitz https://stackblitz.com/edit/angular-6-jwt-authentication-example-tsu2sm
你可以得到我需要的东西..
在stackblitz中,如果你给https://angular-6-jwt-authentication-example-tsu2sm.stackblitz.io/user,那么它将重定向到用户组件,但是我们的主页有一个条件,如果登录用户有"fake-jwt-token",那么用户是严格不允许访问user url 和组件..
编辑
我不是要阻止登录,用户可以登录并可以带回家组件但如果用户有fake-jwt-token,那么他不能去/user单独的url,但他可以访问其他页面..
拥有fake-jwt-token的用户可以成功登录,但需要防止进入https://angular-6-jwt-authentication-example-tsu2sm.stackblitz.io/user
第 1 步:
用户可以使用 test 和 test 作为用户名和密码登录
第 2 步:
在提供凭据后,用户将被重定向到主组件。
第 3 步:
现在登录的用户有fake-jwt-token 所以在登录后限制他访问user 组件所以如果他从主组件https://angular-6-jwt-authentication-example-tsu2sm.stackblitz.io/user 给出这样的url,然后重定向回主组件..
请帮助我阻止用户使用“fake-jwt-token”进入用户路由 url..
【问题讨论】:
-
你的意思是登录一次后直接修改路由url?如果您还没有登录,它可以正常工作。
-
@xyz,截至登录没有问题,但登录后如果令牌是假 jwt 令牌,则不允许用户访问用户组件,因此他无法直接移动到用户 url..
-
那为什么会错过应用您在 Auth Guard 的 Home 组件中应用的条件:D
-
@xyz,对不起,我无法联系到你。我是 Angular 新手,所以即使在基于假 jwt 令牌登录后,我也无法阻止用户进行此类重定向。因此寻求帮助请帮助我使用我提供的相同 stackblitz 以便我更好地理解..
标签: javascript angular typescript angular6 angular-routing