SANE 堆栈和 Passportjs

Posted

技术标签:

【中文标题】SANE 堆栈和 Passportjs【英文标题】:SANE stack and Passportjs 【发布时间】:2015-06-18 07:13:32 【问题描述】:

我正在使用sane stack,我想在其中添加passportjs。

我使用指令here 在sails 应用程序中成功实现了passportjs。我正在尝试使用这些指令将 passportjs 添加到一个健全的应用程序中。我也在考虑尝试让sails 为登录、注销等页面提供服务,因为这些说明使用sails 的视图。这可能不是最好的决定,但现在我只想要一些可行的东西。

我在登录时遇到以下错误。

error: Sending 500 ("Server Error") response:
server   |  TypeError: undefined is not a function
server   |     at Object.AuthController.login (/Users/someUser/Documents/sanestack/project/server/api/controllers/AuthController.js:50:9)
server   |     at bound (/usr/local/lib/node_modules/sails/node_modules/lodash/dist/lodash.js:729:21)
server   |     at routeTargetFnWrapper (/usr/local/lib/node_modules/sails/lib/router/bind.js:179:5)
server   |     at callbacks (/usr/local/lib/node_modules/sails/node_modules/express/lib/router/index.js:164:37)
server   |     at param (/usr/local/lib/node_modules/sails/node_modules/express/lib/router/index.js:138:11)
server   |     at pass (/usr/local/lib/node_modules/sails/node_modules/express/lib/router/index.js:145:5)
server   |     at nextRoute (/usr/local/lib/node_modules/sails/node_modules/express/lib/router/index.js:100:7)
server   |     at callbacks (/usr/local/lib/node_modules/sails/node_modules/express/lib/router/index.js:167:11)
server   |     at /usr/local/lib/node_modules/sails/lib/router/bind.js:187:7
server   |     at /Users/someUser/Documents/sanestack/project/server/api/policies/passport.js:32:7
server   |     at SessionStrategy.strategy.pass (/Users/someUser/Documents/sanestack/project/server/node_modules/passport/lib/middleware/authenticate.js:318:9)
server   |     at SessionStrategy.authenticate (/Users/someUser/Documents/sanestack/project/server/node_modules/passport/lib/strategies/session.js:67:10)
server   |     at attempt (/Users/someUser/Documents/sanestack/project/server/node_modules/passport/lib/middleware/authenticate.js:341:16)
server   |     at authenticate (/Users/someUser/Documents/sanestack/project/server/node_modules/passport/lib/middleware/authenticate.js:342:7)
server   |     at /Users/someUser/Documents/sanestack/project/server/api/policies/passport.js:28:23
server   |     at initialize (/Users/someUser/Documents/sanestack/project/server/node_modules/passport/lib/middleware/initialize.js:62:5) [TypeError: undefined is not a function]

问题在于 server/api/controllers/AuthController.js 中的以下代码

 33   login: function (req, res) 
 34     var strategies = sails.config.passport
 35       , providers  = ;
 36
 37     // Get a list of available providers for use in your templates.
 38     Object.keys(strategies).forEach(function (key) 
 39       if (key === 'local') 
 40         return;
 41       
 42
 43       providers[key] = 
 44         name: strategies[key].name
 45       , slug: key
 46       ;
 47     );
 48
 49     // Render the `auth/login.ext` view
 50     res.view(
 51       providers : providers
 52     , errors    : req.flash('error')
 53     );
 54   ,

还有 /server/api/policies/passport.js 中的以下代码

 24 module.exports = function (req, res, next) 
 25   // Initialize Passport
 26   passport.initialize()(req, res, function () 
 27     // Use the built-in sessions
 28     passport.session()(req, res, function () 
 29       // Make the user available throughout the frontend
 30       res.locals.user = req.user;
 31
 32       next();
 33     );
 34   );
 35 ;

任何帮助将不胜感激。

【问题讨论】:

还有,哪一个是第 50 行? 我添加了行号。第 50 行用于 AuthController.js 所以,res.view 不存在。不知道为什么会这样。 【参考方案1】:

我相信您遇到了这个问题,因为您正在尝试使用 Sails 服务器视图,而 Sane 堆栈希望 Ember 处理所有视图...如果您查看 https://github.com/mgenev/how-to-sane,您将看到客户端/服务器身份验证那里的互动以及 2 人如何一起玩,它不是基于护照的,它还有一些工作待完成,但你可以得到一般图片

【讨论】:

我之前试过那个链接。我无法让一切正常工作。当我执行sane up 时,我遇到了很多错误。诸如Cannot find module 'ember-cli/lib/broccoli/ember-app'17:10 error Expected indentation of 10 characters indent 之类的东西还有很多。也许我也会在那个帖子上发帖。无论如何,我会看一下代码,看看我能不能做点什么。谢谢。 哦,忽略这些错误,我几天前添加了一个 linter,还没有机会清除它们。关于找不到模块“ember-cli/lib/broccoli/ember-app”,我认为您需要在客户端文件夹中运行“npm install”,然后在该文件夹中运行“bower install”,并在 /server中运行 npm install > 谢谢!您的建议有助于项目启动和运行。我看到您在附加工具中有 Passport - 用户身份验证。你打算在这个项目中实施护照吗? 我拥有它,然后发现它是多余的,但如果我切换到sails-permissions,可能会添加它,还没有决定 如果您还有其他问题,请来聊天gitter.im/artificialio/sane

以上是关于SANE 堆栈和 Passportjs的主要内容,如果未能解决你的问题,请参考以下文章

sh 对于ECS #docker,Sane`docker stats`

[Webpack 2] Maintain sane file sizes with webpack code splitting

Linux文件查找find练习题

检查日期是过去还是将来

linux查看进程的启动时间

linux查看进程的启动时间