2011-07-11 63 views
0

我有以下coffescript代码。根据documentation,使用express和mongoose-auth,使用中间件应该启用路由的下降。这意味着在我致电/ auth/twitter后,我应该使用twitter登录。不幸的是,由于某种原因我得到了404错误有任何想法吗?express - mongoose-auth路由问题

在此先感谢。

express  = require 'express' 
mongoose  = require 'mongoose' 
mongoose_auth = require 'mongoose-auth' 

UserSchema = new mongoose.Schema {} 
User 

UserSchema.plugin mongoose_auth, { 
    everymodule: { 
    everyauth: { 
     User:() -> 
     return User 
    } 
    } 
    twitter: { 
    everyauth: { 
     myHostname:  'http://localhost:3000' 
     consumerKey: '' 
     consumerSecret: '' 
     redirectPath: '/' 
    } 
    } 
} 

mongoose.model 'User', UserSchema 

mongoose.connect 'mongodb://localhost/foobar' 

User = mongoose.model 'User' 

app = module.exports = express.createServer() 

app.configure -> 
    app.set 'views', "#{__dirname}/views" 
    app.set 'view engine', 'jade' 
    app.use require('stylus').middleware { src: "#{__dirname}/public" } 
    app.use express.static "#{__dirname}/public" 
    app.use express.bodyParser() 
    app.use express.methodOverride() 
    #app.use app.router 
    app.use express.cookieParser() 
    app.use express.session { secret: 'foobarmoocowetc' } 
    mongoose_auth.middleware() 

app.configure 'development',() -> 
    app.use express.errorHandler { 
    dumpExceptions: true 
    showStack: true 
    } 

app.configure 'production',() -> 
    app.use express.errorHandler() 

app.get '/', (req, res) -> 
    res.render 'page/index' 

mongoose_auth.helpExpress app 

app.listen 3000 
console.log 'Express server listening on port %d in %s mode', app.address().port, app.settings.env 

回答

2

您没有将mongoose_auth.middleware()放入express的中间件列表中。您需要

app.use mongoose_auth.midleware()

他们这样,你有它的中间件刚刚创建和忽略。可能你在自述文件中关注了这个例子,但是他在调用createServer时使用的是app.use,但他需要将中间件功能传递给app.use才能正确注册它。

这就是一个问题至少。修复并看看会发生什么。有很多配置细节必须完美才能让everyauth正常工作,所以您可能还需要其他一些调整。

+0

我犯了同样的错误。我多么愚蠢。谢啦。 :) –