【发布时间】:2015-11-04 21:40:09
【问题描述】:
有没有办法使用会话信息,在用户成功登录时从数据库中加载用户数据,跨越 Hapijs 服务器路由中的不同路由?
索引.js
var Hapi = require('hapi');
var server = new Hapi.Server();
var routeManager = require('./routes/manager');
server.connection({ host: "localhost", port: 8000 });
server.register(require('hapi-auth-cookie'), function (err) {
server.auth.strategy('base', 'cookie', {
password: 'somesecret',
cookie: 'app-cookie',
isSecure: false
});
});
server.route(routeManager.loginRoutes);
server.start(function(){
console.log('application started running on: '+JSON.stringify(server.info.uri));
});`
manager.js
`var users = {
john: {
id: 'john',
password: 'pass',
name: 'John Doe',
scope: "admin"
}
};
var loginRoutes = [
{
method: 'GET',
path: '/',
config: {
auth: false,
handler: function homePageHandler(request, reply) {
return reply('Home Page');
}
}
},
{
method: ['GET', 'POST'],
path: '/login/{user}',
config: {
auth: false,
handler: function(request, reply){
if(request.params.user === users[request.params.user].id) {
request.auth.session.set(users[request.params.user]);
console.log("login auth info: "+JSON.stringify(request.auth))
reply("Hello, "+users[request.params.user].name);
}
}
}
},
{
method: ['GET', 'POST'],
path: '/logout/{user}',
config: {
auth: {
strategy: 'base'
},
handler: function(request, reply){
console.log("logout auth info: "+JSON.stringify(request.auth))
request.auth.session.clear();
return reply("You are logged out");
}
}
}
];
exports.loginRoutes = loginRoutes;`
【问题讨论】:
标签: javascript node.js authentication session-cookies hapijs