每个人都没有定义

use*_*788 9 node.js express everyauth

我是nodejs,everyauth等的新手.我对每一个人都有一些麻烦.在我看来,如果我访问everyauth对象,我会收到错误'everyauth is not defined'.然而,oauth流本身对每个人来说都很好.这是细节,

入口点 - app.js

var express = require('express');
var everyauth = require('everyauth');
everyauth.debug = true;
var app = express();


everyauth['37signals']
  .appId('e6e76726501abf1b5627fe854b384ef8d62d7a55')
  .appSecret('7c6891f46cb19aaf1831785968630ed4a1b3c342')
  .findOrCreateUser( function (sess, accessToken, accessSecret, _37signalsUser) {
  //code to handle find or create
}
  .redirectPath('/');

app.configure(function(){
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.cookieParser());
  app.use(express.session({ secret: 'foobar' }));
  app.use(express.bodyParser());
  app.use(everyauth.middleware());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(__dirname + '/public'));
  everyauth.helpExpress(app);
});




app.configure('development', function(){
  console.log('inside development configure');
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); 
});

app.configure('production', function(){
  app.use(express.errorHandler()); 
});

app.get('/', function (req, res) {
  console.log('everyauthloggedin='+ everyauth.loggedIn); // everyauth.loggedIn is undefined
    res.render('home');
});
Run Code Online (Sandbox Code Playgroud)

home.jade

if(!everyauth.loggedIn) // get everyauth is not defined
    h2 Not authenicated 
else
    h2 Authenicated
    p= JSON.stringify(everyauth['37signals'].user)  
Run Code Online (Sandbox Code Playgroud)

安装节点模块,

highrise@0.0.1c:\dev\misc\hge\highrise
??? everyauth@0.2.34
? ??? connect@2.3.9
? ? ??? bytes@0.1.0
? ? ??? cookie@0.0.4
? ? ??? crc@0.2.0
? ? ??? formidable@1.0.11
? ? ??? fresh@0.1.0
? ? ??? qs@0.4.2
? ? ??? send@0.0.3
? ?   ??? mime@1.2.6
? ?   ??? range-parser@0.0.4
? ??? debug@0.5.0
? ??? node-swt@0.1.1
? ??? node-wsfederation@0.1.1
? ??? oauth@0.9.8
? ??? openid@0.4.2
? ??? request@2.9.203
? ??? xml2js@0.1.14
?   ??? sax@0.4.2
??? express@3.0.0rc3
? ??? commander@0.6.1
? ??? connect@2.4.3
? ? ??? bytes@0.1.0
? ? ??? formidable@1.0.11
? ? ??? pause@0.0.1
? ? ??? qs@0.4.2
? ??? cookie@0.0.4
? ??? crc@0.2.0
? ??? debug@0.7.0
? ??? fresh@0.1.0
? ??? methods@0.0.1
? ??? mkdirp@0.3.3
? ??? range-parser@0.0.4
? ??? send@0.0.3
?   ??? mime@1.2.6
??? jade@0.27.2
? ??? commander@0.6.1
? ??? mkdirp@0.3.0
??? request@2.10.0
??? sequelize@1.5.0
? ??? commander@0.6.1
? ??? generic-pool@1.0.9
? ??? lingo@0.0.5
? ??? moment@1.1.1
? ??? mysql@0.9.6
? ? ??? hashish@0.0.4
? ?   ??? traverse@0.6.3
? ??? underscore@1.2.4
? ??? underscore.string@2.0.0
? ??? validator@0.3.9
??? xml2js@0.1.14
  ??? sax@0.4.2
Run Code Online (Sandbox Code Playgroud)

编辑 - 添加我遵循的示例,

来自everyauth网站

在主应用程序文件中 - https://github.com/bnoguchi/everyauth/blob/master/example/server.js,使用..渲染视图

app.get('/', function (req, res) {
  res.render('home');
});
Run Code Online (Sandbox Code Playgroud)

在视图文件中,访问everyauth对象 - https://github.com/bnoguchi/everyauth/blob/master/example/views/home.jade

- if (!everyauth.loggedIn)
  h2 Not Authenticated
Run Code Online (Sandbox Code Playgroud)

除非我遗漏了某些东西,否则everyauth对象不会传递给视图.

sae*_*eed -1

那是因为您尝试从玉模板访问 everyauth。尽管您可以将 everyauth 变量传递给模板,但这不是一个好的做法。

相反,if/else 块应该保留在您的控制器中。然后,无论用户是否登录,您都可以呈现不同的模板。

像这样的东西

if(everyauth.loggedIn){

  template = 'authenicated';
}
 else{

  template = 'unauthenicated';
}

res.render(template, {

    title: { title: 'Title' }

});
Run Code Online (Sandbox Code Playgroud)