I am using the sane stack and I would like to add passportjs to it.
I successfully implemented passportjs in a sails application using the instructions here. I am trying to use those instruction to add passportjs to a sane application. I am also considering trying to have sails serve the login, logout, ect... pages, since the those instructions use sails' views. This might not be the best decision going forward, but right now I just want something that works.
I have been getting the following error when I go to login.
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]
The problem is with following code in 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 },
And also the following code in /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 };
Any help would greatly be appreciated.
Aucun commentaire:
Enregistrer un commentaire