2017-09-27 46 views
0

使用情况keystonejs签到不与功能工作作为第二个参数

后重定向我有针对前端,需要在用户签署了一些自定义表单。 因此我使用keystone.js自己的“requireUser”中间件。 用户登录后,要访问该站点,默认行为是在“/ keystone”显示管理用户界面 - 但是我想重新导向回到前一个前台页面,以便用户可以开始填写表单。

什么工作

在keystone.js,具有完全相同的名称的文件中,可以设置

keystone.set('signin redirect', '/'); 

其登入后重定向到主页。

我需要什么

不过,我需要的是设置URL重定向到动态,但我这样做的时候,该功能不会被调用:

keystone.set('signin redirect', function(req, res){ 
    var url = req.session.returnTo || '/'; 
    res.redirect(url); 
}); 

的REQ。 session.returnTo参数被设置在前面提到的文件中的“middleware.js”,从前端页面服用req.path属性:

exports.requireUser = function (req, res, next) { 
if (!req.user) { 
    req.flash('error', 'Please sign in to access this page.'); 
    req.session.returnTo = req.path; 
    res.redirect('/keystone/signin'); 
} else { 
    next(); 
} 
}; 

我的临时解决方法

在梯形/管理/服务器/路由/ signin.js我延长了当地人的重定向属性对象从

redirect: keystone.get('signin redirect'), 

redirect: (typeof keystone.get('signin redirect') === 'string') ? 
keystone.get('signin redirect') : keystone.get('signin redirect')(req, res), 

我知道这不是一个理想的解决方案,但是由于我仍然在学习keystone.js,你知道处理这个问题的更好方法吗?

注意:设置“signout重定向”键(既字符串或作为第二个参数的函数)时相同的重定向策略的作品,所以我想这一定是一些被遗忘了实施?

感谢

回答

1

@hajn 继梯形项目#1489的问题,有截至目前没有理想的解决方案。文档没有正确提供函数参数(我正在考虑这个问题)。所以,我在3天前重新开放了这个问题。

+0

嘿我看到你对项目问题的评论,但没有时间回到它,随时添加解决方案从线程,所以这个问题有一个解决方案 – hajn

相关问题