api-token
v0.1.1
Published
api-token
Downloads
11
Readme
api-token
Simple module for Node.js that can be used e.g. for REST api session management.
Installation
npm install api-token --save
Usage
Node.js server
setup api-token
var apiToken = require('api-token');
/* set expiration time to 2 minutes */
apiToken.setExpirationTime(2);
expressjs
Example how to use api-token module in Express application. For more details see Example project.
app.all('/api/*', function(req, res, next){
if(req.url === '/api/authenticate'){
/* token is not needed when authenticating */
next();
}else if(apiToken.isTokenValid(req.get('API-Token'))){
/* if token is valid continue */
next();
}else{
/* if token is not valid send unauthorized http statuscode to client */
res.send(401);
}
});
app.post('/api/authenticate', function(req, res){
var authenticated = false;
/* do your authentication tricks */
if(!authenticated){
res.send(401);
}else{
var user = apiToken.addUser(req.body.username);
/* send token back to client */
res.send(200,{'token':user.token});
}
});
plain http server
Example how to use api-token with http server.
http.createServer(function (req, res) {
/* if requesting API */
if((req.url.indexOf('/api')>-1)){
/* if authenticating */
if(req.url.indexOf('/api/authenticate')>-1){
if (req.method == 'POST') {
var payload = "";
req.on('data', function(chunk) {
payload= chunk.toString();
});
req.on('end', function() {
var json = JSON.parse(payload);
var authenticated = false;
/* do your authentication tricks */
if(!authenticated){
res.writeHead(401, "Unauthorized", {'Content-Type': 'text/plain'});
res.end();
}else{
var user = apiToken.addUser(json.username);
res.writeHead(200, "OK", {'Content-Type': 'application/json'});
/* send token back to client */
res.end(JSON.stringify({'token':user.token}));
}
});
}
}else{
if(apiToken.isTokenValid(req.headers['api-token'])){
/* if token is valid continue */
res.writeHead(200, "OK", {'Content-Type': 'application/json'});
res.end(JSON.stringify({'message':'Here is the data you requested, sir.'}));
}else{
/* if token is not valid send unauthorized http statuscode to client */
res.writeHead(401, "Unauthorized", {'Content-Type': 'text/plain'});
res.end();
}
}
}else{
/* not api request */
res.writeHead(200, "OK", {'Content-Type': 'application/json'});
res.end();
}
}).listen(1337, '127.0.0.1');
Example project
Example application which demonstrates the use of the module. https://github.com/laardee/api-token-expressjs-demo
Release History
- 0.1.0 Initial release