如何使用 Passport 对 Sails JS 应用程序进行身份验证? [复制]

Posted

技术标签:

【中文标题】如何使用 Passport 对 Sails JS 应用程序进行身份验证? [复制]【英文标题】:How to authenticate Sails JS application using Passport? [duplicate] 【发布时间】:2015-01-24 17:19:07 【问题描述】:

我正在使用 Sails v0.10.5。我想使用 Passport 将身份验证系统与用户名和密码集成在一起。为此,我正在阅读以下文档:

[How To] Implement Passport.js Authentication with Sails.js CREATING A SAILS APPLICATION USING PASSPORT AUTHENTICATION

但是,我在 cmets 中看到这些已过时,不再适用于sails v0.10.5。我尝试了这些,它没有进行身份验证,我无需任何身份验证即可访问所有控制器操作。

是否有任何更新版本或任何其他有用的集成文档?

【问题讨论】:

请参阅下面的评论,了解我为解决此问题所做的工作github.com/carlospliego/sails-token-auth-setup 【参考方案1】:

在测试了sails-generate-auth、sails-auth 和waterlock 之后,我发现所有这些解决方案要么尝试做太多事情,要么没有正确完成所有事情。然后我决定提供一些帮助,并写一些关于如何做到这一点的说明。我已经使用这些步骤一段时间了。

第 1 步(全局):$ npm install -g sails

第 2 步(应用程序):$ sails new myApp

第 3 步(文件):将https://github.com/carlospliego/sails-token-auth-setup 中的每个文件复制到其对应的文件夹中

第 4 步(策略):将此代码添加到您的 config/policies.js

 '*': "hasToken",
 UserController: 
    "create": true
 ,
 AuthController: 
    '*': true
 

第五步:更改config/tokenSecret.js的值

第 6 步:(依赖项)

npm install --save passport
npm install --save passport-local
npm install --save bcrypt-nodejs
npm install --save jsonwebtoken
npm install --save express-jwt

您的端点将如下所示:

POST/GET/PUT/DELETE user/ POST auth/login DELETE auth/logout

这里是关于如何在sails 中创建基于令牌的身份验证的精彩指南:https://github.com/carlospliego/sails-token-auth-setup

【讨论】:

【参考方案2】:

我强烈建议您尝试sails-generate-auth 生成器。它基于护照,并为您的sails.js 应用程序创建整个身份验证层,包括本地策略(用户/密码)、OAuth2.0 和 OpenID。

Sails-generate-auth 将为您创建两个新模型(用户、护照)、身份验证控制器、服务、配置路由和策略。 因此,如果您想将身份验证应用于现有应用程序,创建新的sails 应用程序会更安全,使用 sails-generate-auth 生成身份验证层,对其进行一些测试,然后将必要的文件复制到您的原始申请。

希望对您有所帮助。

编辑

sails-auth 也是一个不错的解决方案。与sails-generate-auth 类似,它会生成所有必要的模型和服务,以便您可以轻松地将其连接到现有服务。

【讨论】:

谢谢!让我试试这个。 我试过sails-generate-auth。我已经按照他们的文档中提到的那样配置了所有内容。但是当我抬起服务器时,它无法正常工作。我能够访问所有控制器。这是一个示例应用程序:sails-passport。当我尝试时,这也有同样的问题。知道为什么会这样吗?我正在使用本地策略进行身份验证 成功了!我在上面的评论中得到了这个问题的答案。 Passport 没有拒绝访问控制器的策略。我必须为此制定另一个政策。 关于sails-generate-auth 的任何建议都开始被放弃并且几个月来没有任何有意义的更新? @ShawnStrickland 我刚刚编辑了我的答案。请查看sails-auth。【参考方案3】:

查看这个易于使用的 sails.js 示例,其中 passport.js 支持电子邮件、Twitter 和 Facebook:https://github.com/bmustata/sails-auth-super-template

【讨论】:

以上是关于如何使用 Passport 对 Sails JS 应用程序进行身份验证? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

passport.js 使用sails.js 验证弹出窗口

Sails.js + Passport.js 获取当前登录用户

Sails.js + Passport.js 通过 websockets 进行身份验证

使用 passport.js、sails.js API 和 ember.js 登录 Facebook

使用 Sails.JS 框架的 Node.JS -- Passport:没有在名称下注册策略:facebook

Sails.js 中的 JWT 和护照