2015-09-26 36 views
1

我正在使用Node.js/Express设计我的用户身份验证系统,而且我一直在寻找Web身份验证策略,我注意到很多开发人员推荐使用passport.js帮助认证。Passport.js实用于简单登录

我的身份验证只会对JSON Web令牌使用用户名/密码策略。根据这个假设,我似乎必须自己管理整个身份验证:我检查数据库的用户名和密码,然后检查并附加JWT。看起来Passport只是将我的工作包装在自己的功能中。

仅使用用户名/密码策略,Passport有什么用处?在这种情况下,Passport提供的对我有什么真正的好处,只是在没有它的情况下执行身份验证?

回答

0

护照给你更多的灵活性和可扩展性。现在,您需要一个特定策略,但将来您可以添加或删除旧策略。使用护照等模块可以使您的应用程序代码独立于某些流程。它几乎就像依赖注入一样,你将注入策略与硬编码相反。

我想说的是,好的应用程序应该尽可能多地具有可以注入策略/策略的函数/模块。独立的模块也是nodejs/express风格。

如果你以相同的风格编码你的认证,那么它是超级的(但为什么重新发明轮子)。

使用护照,您可以继承基础战略,并严格按照您的需求创建新战略,并将其与其他战略一起使用。

+1

好点,但我不认为他们足够强大,以保证处理另一个模块。如果使用Passport的唯一理由是1)具有更多的模块化代码,并且2)为将来可能添加的身份验证策略提供更多的灵活性,那么1)使用Passport来简单模块化只会增加我的代码库和依赖关系,2)我可以轻松地当我需要穿过那座桥时切换到护照。 – Rhyeen

+0

我也喜欢你的观点。我没有更多赞成护照的论据。有时候我也会选择自己的解决方案,但我相信我的答案中的大部分时间参数都是正确的。 –

0

从来没有。永远。实行。你的。拥有。安全。框架

除非你真正想实现一个框架,你拥有所有的资源在世界上做到这一点,所有必需的知识和关键人员(如OWASP)&等等等等

使用现有lib用于您的项目

使用开源并经过测试的库或框架。是的,它不会是完美的,会有局限性。是的,它可能不是最安全的代码。但它会比你自己更好,特别是如果你从头开始。

然后按照CSRF,XSS,DDoS &其他类型的攻击预防的最佳做法。