问题标签 [auth-guard]

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.

0 投票
1 回答
113 浏览

typescript - 我正在开发一个离子应用程序,我在其中使用身份验证保护。auth 守卫不让 screnn 加载

我在离子中使用身份验证守卫。这是我正在使用 canload 的 auth guads 服务中的代码

这是验证服务中的代码。它正在检查用户是否已登录,如果已登录,则状态为真

这是 app.routing.module.ts 中的代码。在这里,我使用 canload auth 保护,但它不让打开屏幕。当我删除 canLoad: [AuthGuard] 时,它可以正常工作,但是如果我单击应用程序中的后退按钮,它会返回登录页面。

这是 app.module.ts 中的代码,我在其中添加了离子存储、authguard 服务和身份验证服务

我的 ionic cli 是 5.4.16,框架是 @ionic/angular 5.2.3

0 投票
0 回答
477 浏览

typescript - 应用程序组件甚至在角度保护检查来自 API 的数据之前加载

我有一个角度应用程序,其app.component.html如下所示:

' app-nav-bar ' 是一个组件,它在这个 Angular 应用程序启动时被加载,它的 nav-bar.component.ts 有 ' ngAfterViewInit ' 和一些控制台消息如下:

ngAfterViewInit() { console.log("导航栏被加载") ; }

我有一个路由模块(app-routing.module.ts),它定义路由如下:

我使用 angular Guard 服务基于 api 授权用户并激活相应的路由。 authguard.guard.ts

我没有在 app.modules.ts 的任何声明或条目组件中添加“AuthguardGuard”,现在我遇到了如下几个问题。

  1. nav-bar.component.ts先加载,然后 auth-guard 如下:但我希望 auth-guard 先授权并加载 app-component.html,

    导航栏被加载 // 从 app-nav-bar.ts 打印的控制台在 auth-guard 中成功 // 从 auth-guard.guard.ts 打印的控制台

  2. 以下错误来自 angular-auth-guard

    ERROR 错误:未捕获(承诺中):错误:未找到 e 的组件工厂。你把它添加到@NgModule.entryComponents 了吗?错误:找不到 e 的组件工厂。你把它添加到@NgModule.entryComponents 了吗?

0 投票
2 回答
844 浏览

angular - 如何根据模块条件允许用户路由?

我知道 Angular 中 Auth 守卫的用法,我只是 Angular 的初学者,我刚刚做了一个基于读写访问的基本身份验证,其中包括 isAdmin 或 Isguest 等角色

但是现在我希望该特定用户必须只能访问某些路线

就像我有三个模块

  1. 一个组件
  2. B组份
  3. C 组件

以上所有组件可能是子路由,也可能不是子路由。

我希望 harry 用户可以访问模块 A 和 B

Jackson 可以访问模块 B 和 C

Michel 只能访问模块 A

那么如何在 Angular 中构建这种类型的机制呢?

实际上我知道 Auth 守卫,但我如何组织数据库中的数据以添加组件列表或其他内容等?

我必须在 canActivate 中添加什么条件?

如果明天有一个新组件出现并且我需要访问授权,我需要处理更少并且动态的解决方案。

欢迎任何伟大的想法......!

0 投票
1 回答
21 浏览

angular - Angular Authgaurd 登录后不会重定向或强制应用程序到主页

路由模块

登录组件.ts

Authgaurd.ts

身份验证服务.ts

一旦通过身份验证,它就会创建一个密钥并存储它,但我无法理解为什么该页面仍在登录页面中,而没有重定向或导航并
在我强制重新加载页面时强制 authservice 搜索密钥我仍然得到登录页面并使用第二次身份验证我可以访问所有其他页面

我不明白为什么以及如何在存储密钥后强制角度应用程序查看

0 投票
1 回答
54 浏览

angular - 为什么 AuthGuard 中的 observable 总是错误的?

我不明白我错在哪里,但如果我 console.log 它,isAuth 总是错误的。

编辑

}

这工作正常,但是,这似乎不是一个好习惯.. 我试图编写更好的代码行。

0 投票
2 回答
139 浏览

angular - 角度防护没有触发路由

我从输入中获取值

然后将它们与 db 值进行比较,如果它们是正确的。然后我正在更新商店

并派人isAuthCanActivate守卫

主要问题是如果值正确,我可以登录,但只能在第二次单击提交按钮时登录。首次单击并将isAuth值设置为后,商店正在正确更新true

getStoreData$执行

并存储配置

0 投票
1 回答
1456 浏览

angular - Angular MsalGuard for Authentication 和自己写的 Guard for Authorize,需要先等待认证

我有一个应用程序,其中有两个警卫(MsalGuard - 用于身份验证,AuthGuard - 编写自己的代码来授权用户是否有权访问该特定页面)。在加载模块时使用延迟加载。请找到下面提到的代码

应用程序路由.module.ts

这里的主要问题是,如果我们登录一次并能够进行相应的授权,它会按预期工作。但如果我清除了总缓存并直接打开其中一个组件页面,那么它会询问 MsalAuth 并提供详细信息,但到那时AuthGuard 可能被执行并且用户详细信息为空并且它在未经授权的情况下打开页面。

0 投票
0 回答
37 浏览

angular - Angular 路由 Home 组件仅在我单击时才有效

我现在正困扰着一个奇怪的情况。我正在尝试创建一个简单的身份验证应用程序。直到现在都很好。

在我的应用程序中,我将登录验证发送到使用 Express 创建的后端。然后它确认并向前端发送 ok 响应。这是问题所在。当我登录后尝试单击主页时,它会正确显示主页:

https://prnt.sc/umn5tx

但是当我尝试将浏览器定位到“http://localhost:4200/”时,它不会显示已经将我的 homecomponent 路径设置为“”的 home 组件:

https://prnt.sc/umn7u5

它应该显示它,因为 . 所以这里是代码:

应用路由模块

认证卫士

这是身份验证服务

提前致谢!

0 投票
2 回答
90 浏览

angular - Angular - 响应不可分配给类型“请求?:HttpRequest

我尝试在 Angular 中编写 AuthGuard,但出现以下错误:

类型 'typeof AuthServiceService' 不可分配给类型 '(request?: HttpRequest) => string | 承诺'。类型 'typeof AuthServiceService' 提供不匹配的签名 '(request?: HttpRequest): string

这是我的 auth-service.service.ts:

这是我的 AuthGuard 服务:

我在 tokenGetter 上的这一行收到此错误:

有人可以帮我 AuthService 的响应应该是什么样子吗?

0 投票
2 回答
291 浏览

angularfire2 - AngularFireAuthGuard redirectUrl 登录后

我使用 firebase 和 AngularFireAuthGuard 来保护特定的路由,这样只有经过身份验证的用户才能访问它们。特别是,我的 MainComponent 和 MgmtComponent 应该只能由 AUTHENTICATED 用户访问。

我的问题是,成功登录后,用户没有被重定向回最初请求的 URL。所以我想要/期望的是:

  1. 用户去/mgmt
  2. 由于用户未通过身份验证,他会自动重定向到/login
  3. 用户身份验证(例如通过 google 或 Facebook OAuth)
  4. 用户被自动重定向回最初请求的页面 ( /mgmt)

步骤 1-3 工作正常,但缺少步骤 4。