2
hapi.js中是否有像reply.redirect('back')
?我試圖在用戶登錄成功之前將用戶重定向到他們請求的原始頁面。hapi.js - 如何在成功驗證後重定向到最初請求的路由?
hapi.js中是否有像reply.redirect('back')
?我試圖在用戶登錄成功之前將用戶重定向到他們請求的原始頁面。hapi.js - 如何在成功驗證後重定向到最初請求的路由?
當使用hapi-auth-cookie方案時,有一個方便的設置用於此確切目的。看看appendNext
in the options。
當您將其設置爲true
時,重定向到您的登錄頁面將包含查詢參數next
。 next
將爲等於原始請求的請求路徑。
然後,您可以在成功登錄時使用此選項重定向到所需的頁面。這裏有一個可運行的例子,你可以玩,並修改您的需要:在瀏覽器中
/login
var Hapi = require('hapi');
var server = new Hapi.Server();
server.connection({ port: 8080 });
server.register(require('hapi-auth-cookie'), function (err) {
server.auth.strategy('session', 'cookie', {
password: 'secret',
cookie: 'sid-example',
redirectTo: '/login',
appendNext: true, // adds a `next` query value
isSecure: false
});
});
server.route([
{
method: 'GET',
path: '/greetings',
config: {
auth: 'session',
handler: function (request, reply) {
reply('Hello there ' + request.auth.credentials.name);
}
}
},
{
method: ['GET', 'POST'],
path: '/login',
config: {
handler: function (request, reply) {
if (request.method === 'post') {
request.auth.session.set({
name: 'John Doe' // for example just let anyone authenticate
});
return reply.redirect(request.query.next); // perform redirect
}
reply('<html><head><title>Login page</title></head><body>' +
'<form method="post"><input type="submit" value="login" /></form>' +
'</body></html>');
},
auth: {
mode: 'try',
strategy: 'session'
},
plugins: {
'hapi-auth-cookie': {
redirectTo: false
}
}
}
}
]);
server.start(function (err) {
if (err) {
throw err;
}
console.log('Server started!');
});
爲了驗證這一點,
/login
,然後重定向到/greetings
成功