我想使用Angular2和TS来构建Web应用程序。
我阅读了一些有关Angular2中身份验证的教程,他们说,我必须实现以下内容。
所有这些组件都通过Angular-Router进行路由,并受到一些防护措施的保护。
但是我认为这个警卫并不是很安全。路由受到保护,但组件在客户端js中的某个位置。一些“ js-hacker”可以在没有权限的情况下访问私有组件。
我对这个想法是正确的吗?
我的解决方案是在身份验证请求期间请求私有组件,并且仅在用户具有权限的情况下才返回私有组件。
但是在这种情况下,我不得不将应用程序分为登录部分和私有部分。(好像开销)
另一种解决方案是随每个请求发送一个令牌,以便“ js-hacker”能够看到该组件,但不能看到其数据,因此对他来说是无用的。(但是此令牌需要存储)
请帮助我确定采用哪种安全性方法,或者建议我采用一种更好的方法(我希望采用一种更好的方法...)。
谢谢。
您将使用*ngIf
有条件的方式将受保护的组件附加到有效的身份验证状态。如果将绑定*ngIf
到的任何对象评估为false,那么它不仅会将其隐藏起来,还将从DOM中完全删除该组件及其内部的所有内容。
如果他们知道自己在做什么,他们仍然可以查看该组件的源代码,是的,但是正如您推测的那样,您希望将敏感数据保留在源代码之外,并仅从经过身份验证的用户那里安全地获取它们。
您应该真正研究Google的Firebase。Firebase可以比您自己更安全,更可靠地为您处理身份验证,并且您可以使用Firebase Realtime Database存储敏感数据,并仅在对用户进行身份验证后才将其发送到客户端。它非常简单,可以与Angular一起很好地工作(虽然不是必需的,但AngularFire2是官方库),并且它具有比数据库和身份验证更多的功能。相信我,您不会后悔。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句