问题标签 [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 投票
2 回答
1706 浏览

angular - Http错误处理不适用于Angular中的地图

我是 Angular 的新手,我正在开发一个使用 Angular 5 作为前端和 Laravel5.5 作为后端的项目。

我正在尝试做的事情: 我正在执行基于令牌的身份验证以检查是否正确的用户正在向后端发送请求,如果令牌未经过身份验证,它将引发异常并且用户将被重定向到登录页面。

我做了什么: 我按照 Youtube 上的教程使用 Authguard 来验证用户,下面是我的代码。

auth.guard.ts

在教程中,他们使用订阅而不是地图,但我做了一些研究,发现我们不能将订阅与 Observable 一起使用。

我的代码虽然显示了订阅错误并将用户重定向到登录页面,但订阅它不会返回 true 或 false,因此即使凭据正确,用户也不会重定向到下一页。

这是验证功能的代码。

用户服务.ts

这是我修改令牌时的控制台

错误

0 投票
1 回答
795 浏览

angular - 角度 4 路由器 auth-guard 未在同一路由上调用

嗨我配置了这个路由:

我不想照顾登录页面的名称,如果那是将来注销后的目标页面。因此,注销完成后,注销组件将重定向到起始页。

目前,没有起始页组件(稍后,可能会有仪表板),但如果您通过了身份验证,则会重定向到“buchbestellungen”路由。如果您没有登录,访问起始页会重定向到 /buchbestellungen,而 auth-guard 服务会重定向到登录路径。

这适用于每条路线(例如 buchbestellungen2),但不是,当我在 /buchbestellungen 上注销时。这将重定向到“/”,然后返回到 buchbestellungen。但是 auth-guard 没有被调用(我在 canActivate() 方法中有一个 Console.log() ,但它也没有被调用)。

示例 1: buchbestellungen2 -> logout() -> 重定向到 / -> 重定向到 /buchbestellungen 被 auth-guard 拦截 i 结束于 /login 路由

示例 2: buchbestellungen -> logout() -> 重定向到 / -> 重定向到 /buchbestellungen(没有 auth-guard 并且没有重定向到 /login)

路由器是否有可能不调用 auth-guard,因为我来自 /buchbestellungen 并且该路由已经过身份验证?是否有可能强制路由器调用警卫?

谢谢

0 投票
1 回答
380 浏览

angular - angular2-jwt 令牌不工作,LoggedIn 功能不工作

我正在制作一个简单的平均身份验证应用程序,其中 angular2-jwt 用于对登录的用户进行身份验证,现在,我希望在登录之前,我不希望仪表板、个人资料显示在导航栏上,而在登录后,注册和登录应该被隐藏,所以我 angular2-jwt,但它不能正常工作,我正在分享下面的代码。 想在登录前隐藏仪表板、个人资料

这是我正在使用的导航栏的代码

这是我做的服务

}

但是在使用它时,它最初隐藏了 Dashboard、Profile 和 Logout,但即使在登录后,这三个链接也被隐藏,并且不显示:

仍然没有显示,即使我已登录

我正在使用本指南:https ://github.com/auth0/angular2-jwt#checking-authentication-to-hideshow-elements-and-handle-routing

0 投票
3 回答
564 浏览

laravel - 在 Laravel 5.5 中使用守卫实现本机多重身份验证(用户与管理员) - 来宾中间件使用硬编码命名路由

我想在我的应用程序中为两种类型的用户实现本机多重身份验证:UserAdmin

  1. 我开始实施新的admins表迁移(通过复制现有的 create_users_table)。

  2. 我创建了一个名为Admin的新模型(通过复制现有的User模型)

  3. 两个(UserAdmin)模型都进行了更新,以指定他们使用的守卫,如下所示:

用户模型

管理模型

  1. 然后我像这样设置身份验证配置:

配置/auth.php

https://pastebin.com/iLAZbX2z

  1. 然后我定义了我的自定义身份验证路由usersadmins如下所示:

路线/web.php

https://pastebin.com/raw/CKX9Xddb

  1. 最后,我为这两种用户类型定义了身份验证保护路由,如下所示:

路线/web.php

我在继续之前先测试了用户登录(要让管理员登录还有更多工作要做),通过进入http://myapp.local/login并输入我的凭据,我被成功重定向到用户的仪表板(即http:/ /myapp.local/manage)。所有用户特定的功能(例如重置通行证)等都可以正常工作)。

然而; 通过直接访问来测试来宾中间件时http://myapp.local/manage,我预计会被重定向到http://myapp.local/login但得到一个错误:

路线 [登录] 未定义。

这个错误是有效的;因为在路由定义中,我将用户登录名命名为user.login

看起来中间件使用了在未经身份验证的异常处理程序中guest调用的硬编码命名路由。login

供应商\laravel\framework\src\Illuminate\Foundation\Exceptions\Handler.php

如何告诉来宾中间件使用不同名称的登录路由(当未经身份验证的用户尝试访问受身份验证保护的页面时)?

稍后我还需要将它用于管理访客中间件。

0 投票
2 回答
1629 浏览

angular - 错误:未捕获(承诺):ReferenceError:未定义本地存储

我正在使用 Angular/Typescript 编写单页应用程序。该应用程序以登录页面开始。当用户通过身份验证时,使用这行代码加载一个新页面:

这很好用!两个路由器路径也装饰有canactivate [ AuthGuard ]

canactivate当应用程序将用户路由到生产文件页面时,这很有效。但是在同一页面上刷新会出现以下错误:

另外,当我手动输入 URL 时也会出现同样的错误?

我知道这个错误在这里还有很多问题。但我认为这有点不同。所以它似乎工作正常,除非有浏览器刷新或手动输入的 URL。

在身份验证服务中,正在设置 localstorage('currentuser'):

由于我使用 Visual Studio 的 SPA 模板,因此有 3 个 app.module 文件:

App.Module.Shared.Ts:

App.Module.Client.ts:

App.Module.Server.ts:

有人可以让我走上正轨吗?

0 投票
1 回答
1195 浏览

angular - 如何在页面重新加载后阻止我的角度应用程序注销

我正在使用 auth gaurd 来防止我的 Angular 应用程序中的 URL 操作并将 URL 操作重定向到登录页面。但这会导致问题,即使在成功登录后,刷新网页时也会将其视为 URL 操作,并通过重定向到登录页面将用户注销。请注意,我没有使用 JWT 或任何类似的身份验证机制. 这是基于后端数据库返回的密码的普通身份验证。到目前为止,我还没有维护任何会话。下面我附上了我已将路径映射到路线的片段:

请帮我解决这个问题。在此先感谢。

0 投票
1 回答
2827 浏览

angular - 如何让 AuthGuard 在 Angular 4 中等待 LocalStorage?

我在 Angular 4 和 ASP.Net Core 中开发了一个网站。然而,有一件事一直困扰着我。它有一些使用 JWT 的基本登录实现,我正在使用本地存储来保存用户对象和令牌。

用户登录后一切正常,但每当我刷新浏览器时,Angular 总是要求我再次登录。我在 AppComponent 上有一个方法来刷新令牌并在每次应用程序启动时返回一个新的用户对象(如果它可以重新验证保存在 localStorage 上的令牌,逻辑发生在 asp net core 中)。

无论如何,我一直在四处寻找,我相信我需要返回 Observables。这是另一个具有非常相似问题的线程:

AuthGuard 在检查用户之前不会等待身份验证完成

主要区别在于答案使用火基,我相信他们的对象已经是 Observable 而我的对象是布尔值。

这是我的代码:

存储服务(本地存储)

AuthGuard 实现

AppComponent 上的令牌刷新 (ngOnInit)

最后,这就是我使用 IsInRole 的方式:

我应该如何将我的布尔变量转换为 Observables?欢迎任何其他关于如何解决此问题的意见。提前致谢。

0 投票
1 回答
900 浏览

angular - 返回值直接订阅到 canActivate auth guard

下面是我的代码,我想做的是试图将返回值直接放入 canActivate 返回,但问题是它会在运行“this._authService.isAdmin(token)”方法之前先运行检查。我知道它是因为异步。但是如何防止呢?我已经有想法了。提前致谢。

我已经尝试将该方法放在构造函数上,但结果仍然相同。

0 投票
1 回答
572 浏览

angular - 成功认证后角度路由不起作用

我使用 AngularFireAuth 进行了简单的身份验证,但现在我的路由不再起作用了,console.logs 显示“很好用”,那么出了什么问题?(这主要只是文档中的路由保护

认证服务

路由

授权保护

0 投票
1 回答
176 浏览

angular - Angular5 routing: Routes after canActivate are ignored

I'm trying to implement routes to separate a public and a secured area.

What i tried to accomplish:

User IS authenticated: The route which is loading the routes from SecureModel should be "skipped".

User is NOT authenticated: The route which is loading the routes from SecureModel should be "skipped".

My configuration for this:

AuthGuard returns a hardcoded false. If i switch to true all secured routes are working as expected.

app-routing.module.ts

secured-routing.module.ts

public-routing.module.ts

The public and secured routes for them selfs are working, when I'm commenting one of the main routes out.

I like this kind of routing structure very much and it would be great if someone could help to get the "switch" between public and secured routes working.