Angular 2 中用于身份验证的良好模板策略

2024-01-10

我目前有一个 Angular 2 应用程序正在运行,如下所示:

App.component 在访问站点时被引导。 App.component 的模板具有所有组件标签(例如 menu.component、search.component 和 router-outlet)。

我基本上需要的是:当前访问者被直接重定向到登录页面,因为用户需要登录。他仍然能够看到菜单以及仅适用于登录用户的所有组件。添加额外模板层以便未登录的用户被重定向的最佳策略是什么?


我这样做的方法是使用 *ngIf 指令“隐藏”这些元素,直到用户通过身份验证。我在上面的 hide 这个词周围使用了引号,因为 Angular 实际上并没有隐藏模板的那部分,它实际上根本不渲染它,所以它不在 DOM 中。

这意味着除非用户登录,否则只会呈现您的登录屏幕。

有关 *ngIf 的更多详细信息可以在这里找到:

https://angular.io/docs/ts/latest/guide/structural-directives.html#!#ngIf https://angular.io/docs/ts/latest/guide/structural-directives.html#!#ngIf

ex.

@Component({
    selector: 'your-selector',
    template: `
        <div *ngIf='isLoggedIn() === true'>
            <menu-component></menu-component>
            <search-component></search-component>
            <router-outlet></router-outlet>
        </div>
        <div *ngIf='isLoggedIn() !== true'>
            <login-component></login-component>
        </div>
    `
    ...
})
export class YourSelectorComponent {
    isLoggedIn() {
        //check if logged in
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular 2 中用于身份验证的良好模板策略 的相关文章

随机推荐

  • C 和 C++ 之间的内存布局兼容性

    我正在建造一个C 使用许多函数的库struct定义在一个C图书馆 为了避免将任何代码移植到 C 我将典型的条件预处理添加到 C 头文件中 例如 my struct h of the C library include
  • Azure 容器注册表保留策略

    我有一个 ACR 它包含适用于我的生产和开发环境的 docker 映像 由于每天都有新的图像被推送 我正在尝试设置保留策略 我的具体用例如下 根据该图像 假设我在 ACR 中有 100 个图像 第 100 个图像由开发环境消耗 然而 生产运
  • C++ 访问向量

    I have std vector其中包含我自己的类 我必须访问它的函数和空隙 class A private int var vector
  • 在 Electron 渲染器进程中读取 Windows 命令行选项

    我在 Windows 中部署了一个 Electron 应用程序 我正在尝试在 exe 上添加命令行选项 C Program Files MyApp exe 调试 如何读取我的应用程序内的调试标志 我尝试使用 process argv 但调试
  • 有没有办法更改领域数据库中的数据类型?

    正如您所看到的图像 我完全搞乱了数据类型 红色圆圈 有没有办法将数据类型更改为整数 EDIT 我想将数据类型从 String 更改为 Int 并且我有现有数据 因此我无法从新领域开始而只更改 var 类型 class Item Object
  • Q_DECLARE_METATYPE 是 boost::multi_array

    我正在尝试使用 Qt 的信号和槽机制传递表示为 boost multi array 的多维数组 我尝试使用以下代码声明元类型 Q DECLARE METATYPE boost multi array
  • MVC 4 SIMpleMembership 与 LDAP

    我想尝试使用 simpleMembership 但将其连接到我们的 LDAP 我在网上没有看到任何关于这样做的内容 只使用 SQL 有谁知道这是否可能并能引导我走向正确的方向 我认为您需要创建一个继承自 ExtendedMembership
  • 结构 - 访问结构元素,不带 .和->

    我需要访问嵌套结构中的一些元素而不使用 and gt 我需要打印出以下值keyValue and alternateKeyValue从测试笔记本电脑定义中不使用 or gt 运算符直接引用 qwerty 结构或其成员 这是结构 typede
  • 如果在接口中声明方法时将注释与方法相关联,我们是否可以强制实现类中存在注释?

    这是关于 Java 中注释的使用 我在接口中声明方法时将注释与方法相关联 在实现时 如何确保该注释与 Override注释一起携带 如果没有 它应该抛出编译错误 Thanks 您不能在编译器中强制执行此操作 不 当在给定类上查找注释时 工具
  • 在 RazorEngine 中使用内部属性

    我们的领域模型属性都是 内部 的 以保护我们所采用的 BDD 方法 我真的很喜欢把一切都内部化 最近 我试图让 RazorEngine 使用这些具有内部成员的域模型之一来处理模板 当它编译时 我收到错误 Attendee FirstName
  • 函数参数类型取决于其他参数的类型

    我正在尝试编写一个具有以下类型签名的函数 范围a是任一类型string or undefined 范围b is a string if a也是一个string 否则它是一个number 到目前为止我的方法如下 function myFunc
  • 对于 .net 开发人员来说,进入移动开发的学习曲线是怎样的?

    对于 net 开发人员来说 进入移动开发的学习曲线是怎样的 有多少种不同的操作系统运行 net windows mobile 和 windows ce 一样吗 学习曲线 我不想说 这取决于 但确实如此 并且取决于几个因素 您的 NET 开发
  • 如何在android中动态添加项目到微调器?

    如何在android中动态添加项目到微调器 Spinner spinner Spinner findViewById R id mySpinner ArrayAdapter
  • 将十六进制字符串转换为十进制整数

    我正在编写一个 Rust 程序 用于读取 I2C 总线并保存数据 当我读取 I2C 总线时 我得到如下十六进制值0x11 0x22 etc 现在 我只能将其作为字符串处理并按原样保存 有没有办法可以将其解析为整数 有没有内置的功能 在大多数
  • 下划线、名称和文字运算符

    我关于名称中下划线的问题得到了部分回答here https stackoverflow com q 12721584 1275653但要么答案不完整 要么我不完全理解 教派 C 11 标准的 2 14 8 7 声明了这一点文字运算符举个例子
  • 使用 Linq.Expressions.Expression 排序

    我写了这段代码来排序IQueryable
  • MongoDb 查询和 system.linq

    当我使用 System linq 查询 MongoCollection 中的对象时 var result collection Find query Where x gt x something something 这是对数据库还是内存中的
  • Angular 在生产中禁用缓存的部分

    我正在开发网站 但是每次我将新版本上传到服务器时 用户都需要清理缓存才能看到更改 这个问题的解决方案是什么 我尝试通过两种方法来解决这个问题 The first way myApp run function rootScope templa
  • 将具有 std::auto_ptr 作为其成员变量的类的对象存储在 std::vector 中是否安全?

    我不能在我的项目中使用shared ptr 没有boost 所以 我正在上一堂与下面的课程大致相似的课程 class MyClass private std auto ptr
  • Angular 2 中用于身份验证的良好模板策略

    我目前有一个 Angular 2 应用程序正在运行 如下所示 App component 在访问站点时被引导 App component 的模板具有所有组件标签 例如 menu component search component 和 ro