Authentication 在CoffeeScript中将auth与express连接
我运行了connectauth和googleoauth2的示例,但无法在自己的代码中运行。不知怎的,我从Google获得了一个access_令牌,但当我尝试使用access令牌通过curl获取数据时,出现了一个401-您的请求中有一个错误。这和我使用时从谷歌得到的回答是一样的,但一定是令牌出了问题 我想使用中间件,因为我需要在整个项目中进行身份验证。另外,我使用的是express路由器,而不是connect路由器。代码如下:Authentication 在CoffeeScript中将auth与express连接,authentication,node.js,coffeescript,express,connect,Authentication,Node.js,Coffeescript,Express,Connect,我运行了connectauth和googleoauth2的示例,但无法在自己的代码中运行。不知怎的,我从Google获得了一个access_令牌,但当我尝试使用access令牌通过curl获取数据时,出现了一个401-您的请求中有一个错误。这和我使用时从谷歌得到的回答是一样的,但一定是令牌出了问题 我想使用中间件,因为我需要在整个项目中进行身份验证。另外,我使用的是express路由器,而不是connect路由器。代码如下: express = require 'express' app
express = require 'express'
app = module.exports = express.createServer()
connect = require 'connect'
auth = require 'connect-auth'
store = require('connect-redis')(express)
keys = require './keys_file'
routes = require("./routes")
auth_middleware = ->
(req, res, next) ->
urlp = url.parse(req.url, true)
if urlp.query.login_with
req.authenticate [ urlp.query.login_with ], (error, authenticated) ->
if error
console.log error
res.end()
else
next() unless authenticated is `undefined`
else
next()
app.configure ->
app.set 'views', __dirname + '/views'
app.set 'view engine', 'jade'
app.use connect.logger()
app.use express.bodyParser()
app.use express.cookieParser()
app.use express.session({ secret: 'keyboard cat', store: new store })
app.use express.static(__dirname + '/public')
app.use auth({strategies: [
auth.Twitter({ consumerKey: keys.twitterConsumerKey, consumerSecret: keys.twitterConsumerSecret}),
auth.Google2({ appId : keys.google2Id, appSecret: keys.google2Secret, scope: "email", callback: keys.google2CallbackAddress})
], trace: true})
app.use auth_middleware
app.use app.router
app.configure "development", ->
app.use express.errorHandler(
dumpExceptions: true
showStack: true
)
app.configure "production", ->
app.use express.errorHandler()
app.dynamicHelpers
session: (req, res) ->
return req.session
app.dynamicHelpers
messages: require 'express-messages'
app.get /.*/, routes.index
app.listen 3000
console.log 'Express server listening on port %d in %s mode', app.address().port, app.settings.env
index.js路由:
exports.index = function(req, res) {
res.writeHead(200, {'Content-Type': 'text/html'})
if( req.isAuthenticated() ) {
res.end( authenticatedContent.replace("#USER#", JSON.stringify( req.getAuthDetails().user ) ) );
} else {
res.end( unAuthenticatedContent.replace("#PAGE#", req.url) );
}
};
我不知道咖啡脚本,但是:
auth_middleware = ->
(req, res, next) ->
urlp = url.parse(req.url, true)
if urlp.query.login_with
req.authenticate [ urlp.query.login_with ], (error, authenticated) ->
if error
console.log error
res.end()
else
next() unless authenticated is `undefined`
else
next()
应该是:
auth_middleware = (req, res, next)->
urlp = url.parse(req.url, true)
if urlp.query.login_with
req.authenticate [ urlp.query.login_with ], (error, authenticated) ->
if error
console.log error
res.end()
else
next() unless authenticated is `undefined`
否则
下一个()
我认为最大的问题是你要发送一个“范围”,试试:
auth.Google2({ appId : keys.google2Id, appSecret: keys.google2Secret, callback: keys.google2CallbackAddress})