【发布时间】:2018-08-04 10:14:01
【问题描述】:
我创建了一个 Angular 应用程序,其中我有一个登录表单,我在其中使用 service 和 guard 实现了身份验证。
我已经定义了一个用户名和密码的界面用户。在authentication.service.ts中使用这个界面我已经定义了两个用户admin和user强>。
我还实现了一个名为 authentication.guard.ts 的守卫,我使用 CanActivate RouteGaurd 将用户路由到他可以访问的页面。
在我的应用程序中有一个只能由 admin 用户访问的管理页面,因此如果管理员仅登录,它就会导航到 管理页面。如果 用户登录,然后他将被重定向到主页跳过管理页面
当 admin 或 user 登录应用程序时,会出现一个菜单栏,其中包含三个菜单项 Home, AdminActivity ,RegisterUser 。
如果 admin 登录应用程序,我试图隐藏 AdminActivity 菜单项,如果 user 则隐藏 RegisterUser 菜单项 登录应用程序。
我尝试在 app.component.ts 中导入身份验证服务,但无法获取记录的用户名和密码。
任何人都可以帮助我实现所需的功能,因为我需要在我的应用程序中实现
请访问我的示例应用程序here
【问题讨论】:
-
用户名是否保存在本地存储中?
-
@AbdulRafay.....是的.....如authentication.service.ts中所示.......let authenticatedUser = users.find(u => u .username === this.user.username); if(authenticatedUser && authenticatedUser.password==this.user.password){ localStorage.setItem("user", this.user.username); this._router.navigate(['/Admin']); }
-
更新您的代码以检查具有本地存储的管理员用户:isSuperAdmin() { if (localStorage.getItem('user') === "admin") { return true; } 否则 { 返回假; } }
-
@Heena 请考虑在您的问题中发布您的代码,方法是点击您问题下方的编辑链接。
标签: angular authentication angular-material angular-flex-layout