问题标签 [angular-guards]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angular - 实施 CanDeactivate Guard 时出错
我目前正在尝试对我的 Angular 应用程序实施 CanDeactivate Guard,该应用程序已经具有 HTTP 拦截器来解析身份验证。但是添加 CanDeactivate 防护会引发错误,如下所述。
我已经在 AppModule 的 providers 数组中注册了实现 CanDeactivate 接口的类。我已经在路由的 canDeactivate 属性中注册了实现 CanDeactivate 接口的类。
实现 CanDeactivate 接口的类:
应用了 Deactivate 防护的组件:
该端点的路由定义:
Module 中的 Providers 数组:
错误
angular - Angular7: Global Guard - CanDeactivate 接口
我对 Angular 很陌生,但未能找到我正在寻找的答案。
我现在面临的问题是,当我切换到另一条路线时,所有全局错误消息都没有消失。
我试图通过使用 CanDeactivate 接口来解决这个问题。这是我的 canDeactivate 方法:
此方法是在名为 cms-page.guard.ts 的服务中创建的,通过在特定页面中使用它,它似乎工作得很好。例如,如果我在“课程”页面中使用它:
基本上,我所做的是在特定页面上应用 canDeactivate 方法。我想知道是否可以创建一个全局应用 canDeactivate 方法的 Guard,因此当您更改为另一条路线时它适用于所有页面?
angular - API 调用执行两次
我使用角色守卫。用户只有拥有一定的权限才能访问特定的路由。用户权限是使用应用程序根组件内的登录服务从后端获取的,并存储在配置服务内的集合中。需要时从服务中获取用户权限。问题是我的角色守卫也需要获取用户权限。由于我的用户权限是在应用程序组件中获取的,因此角色保护在用户权限服务响应之前被执行。我被迫再次从角色守卫内部的后端调用数据。理想情况下,我希望只获取一次数据。如何解决这个问题?
内部角色后卫:
这在用户第一次登录后有效。但是如果我刷新页面,权限不会首先存储在 confservice 中。
我的路由:
angular - 如何对 http 401 做出角度响应
我有一个 nodejs (express) 作为服务器端,一个 angular 6 作为客户端。在服务器中,我有中间件功能,可以进行会话检查。如果会话无效或不存在,我想向客户端发送响应,以便它可以对其做出反应。我想从服务器返回一个 401 的响应代码,并在客户端制作某种 listener\route-guard\HttpInterceptor,这样 - 它可以管理客户端中的情况(例如,将其重定向到登录页面) . 这是我在服务器中的代码:
如何在 Angular 应用程序中捕捉\收听此响应?
angular - Angular - 管理文件可以下载吗?
我有一个带有 Angular 的网站。我用jwt
. 我知道我们可以使用 Angular Route Guard阻止用户进入受限路线。
通常在 SPA 中,所有路由 (html) 都是可下载的。只是我们通过响应 403 代码来处理服务器中未经授权的路由。因此,用户可以看到 html bu 无法获取任何数据是安全的。但是在一个特定的项目中,我们甚至不希望用户能够看到管理面板的 html(因为他可以了解结构)
任何想法?我应该使用 Route Guard 的常用场景还是应该只使用一个单独的面板(例如在未知目录中)?
angular - 如果 HTTP GET 请求没有返回数据,如何保护路由?
下面是我的 Angular 应用程序中的一个表格。它填充了来自以下的数据employees.json
:
当用户单击名称时,将employeeId
传递给此方法:
这是我AppRouting
模块中的路线:
示例路径:http://localhost:4200/profile/1/4
当用户路由到Profile
组件时,调用此代码:
profile.component.ts:
}
profile.component.html:
这是我的employee.service
:
此代码工作正常,并按预期显示数据。
目前,如果我导航到不存在的路线(例如http://localhost:4200/profile/1/123456789
,则该组件将显示为没有数据)。employeeId
Profile
而不是这个,我希望用户被带回PageNotFound
组件。
以下是我目前的路线:
有人可以告诉我我需要做哪些改变来实现这个吗?
angular - Angular AuthGuard 不会从订阅内部返回 UrlTree
UrlTree
如果防护失败,
我正在尝试实现重定向用户。this.authService.isAuthenticated()
返回可观察的。
以下不起作用,但它确实 console false
。
但是,如果我删除订阅,则以下内容有效:
angular - 路由时设置默认查询参数
我有以下路线配置:
我想“自动”包含一些默认的查询参数,当某些东西路由到这个时。
例如:
路由/users
变为/users?p=1s&15
,当它没有查询参数时。
我只是试图用警卫来做这件事(我什至不确定这是做这件事的最佳选择)。下面是我的一段实际代码:
angular - 如何防止 Angular 中用户角色的操作
我已经有一个 AuthService 在登录时对用户进行身份验证,并且 AuthGuard 在未登录的情况下阻止访问。
某些页面我通过 UserProfile/Role 限制访问,但现在我需要阻止页面上的操作。
我有像“管理员、经理、支持和代理”这样的角色,从大到小。
如何将级别仅设置为经理或以上以编辑所有人都可以访问的页面上的内容(支持和代理仅限查看)?
这是我当前的 canActivate 方法:
这是我的模块 routing.module.ts
需要修复这两个主题:
data: { roles: [] }
1)我只想通过较低级别的线路(如代理);
2)内部组件告诉只有经理可以编辑数据(disable
如果角色==支持或代理,则只有一个按钮)