如果失败,则停止页面身份验证重定向到登录页面

因此,我在网站上设置了一些角色/权限,并且在测试当前用户无权查看的页面时,将其重定向到“登录”页面,但是我想显示一条错误消息/页面,指出它们被禁止从查看该页面。

我在Asp.Net Boilerplate .Net Core 2.0 AbpAuthorizationFilter - ChallengeResult / Unauthorized中尝试了该解决方案,但这似乎没有做任何事情。

任何建议都会很棒。

a374896 回答:如果失败,则停止页面身份验证重定向到登录页面

您可以在auth-route-guard.ts的{​​{1}}中更改此行为

angular/src/shared/auth/auth-route-guard.ts截取所有路由,这是文件

AppRouteGuard

如您所见,如果没有授权用户查看可以在其中设置消息或要显示的页面的页面,则可以使用import { Injectable } from '@angular/core'; import { PermissionCheckerService } from 'node_modules/abp-ng2-module/dist/src/auth/permission-checker.service'; import { AppSessionService } from '../session/app-session.service'; import { CanActivate,Router,ActivatedRouteSnapshot,RouterStateSnapshot,CanActivateChild } from '@angular/router'; import { AlertasHelper } from '../helpers/alertas-helper'; @Injectable() export class AppRouteGuard implements CanActivate,CanActivateChild { constructor( private _permissionChecker: PermissionCheckerService,private _router: Router,private _sessionService: AppSessionService,) { } canActivate(route: ActivatedRouteSnapshot,state: RouterStateSnapshot): boolean { if (!this._sessionService.user) { this._router.navigate(['/account/login']); return false; } if (!route.data || !route.data['permission']) { return true; } if (this._permissionChecker.isGranted(route.data['permission'])) { return true; } this._router.navigate([this.selectBestRoute()]); return false; } canActivateChild(route: ActivatedRouteSnapshot,state: RouterStateSnapshot): boolean { return this.canActivate(route,state); } selectBestRoute(): string { if (!this._sessionService.user) { return '/account/login'; } if (this._permissionChecker.isGranted('Pages.Users')) { return '/app/admin/users'; } AlertasHelper.show('Usuario no tiene autorización','Sin autorización'); return '/dashboard/analytics'; } } 方法

查看此

selectBestRoute()

如果未定义 if (!this._sessionService.user) { return '/account/login'; } ,则将返回/ account / login。

从您的路线上指定的_sessionService.user方法中调用

selectBestRoute()方法

这是一个例子

canActivate()

在调用{ path: 'country',data: { permission: 'Aplicacion.Generales.Country' },canActivate: [AppRouteGuard],loadChildren: () => import('./country/country.module').then(module => module.CountryModule) },之前,将在[AppRouteGuard]上进行验证

我希望它能对您有所帮助。

本文链接:https://www.f2er.com/2949796.html

大家都在问