如何从包含的文件重定向到路由
How to redirect to route from included files
我在重定向到所需JavaScript文件的不同路由时遇到问题。正如您在oauth2.js中看到的,我有一个函数validate,当调用request.post()方法的回调时会调用它。这意味着我不能将express实例化(app)作为参数传递。
server.js
var app = require('express);
var login = require('./routes/login');
app.use('/login', login);
var oauth2 = require('./oauth2');
oauth2.auth();
app.get('/login', function(req, res) {
res.sendFile('./public/login.html', { root: __dirname });
});
app.listen(8080);
路由/登录.js
var express = require('express');
var router = express.Router();
module.exports = function (){
router.get('/login', function(req, res){
console.log('Logging in...');
}
return router;
}
oauth2.js
...
var request = require('request');
request.post({
uri: uri,
headers:headers,
body:data
}, validate);
function validate(err, res, body){
...
// REDIRECT TO /login.html
}
如何从validate方法重定向到/login.html?
您可以使用中间件来获取express的响应对象,并在oauth2返回结果时使用它:
var app = require('express);
var login = require('./routes/login');
app.use('/login', login);
var oauth2 = require('./oauth2');
app.use(function (req, res, next) {
oauth2.auth(function (err, res, body) {
// validate
res.redirect('/login');
});
});
app.get('/login', function(req, res) {
res.sendFile('./public/login.html', { root: __dirname });
});
您的oauth2.js应该会收到一个回调:
// some code..
function auth (cb) {
// some code ..
request.post({
uri: uri,
headers:headers,
body:data
}, cb);
// some code ..
}
// some code ..
相关文章:
- Hapi-js重定向到另一个带有额外请求数据的路由
- 无法使用角度路由提供程序重定向
- 哈希重定向之前使用斜杠的主干路由
- 很难理解laravel中的重定向/路由
- 数据切换=“;下拉菜单”;激活路由重定向,而不是yeoman中的下拉菜单
- 路由提供程序否则重定向到不起作用
- AngularJS仅在浏览器的后退按钮上重定向路由
- AngularJs 和 Codeigniter 路由会导致无限重定向循环
- 余烬重定向仅在您第一次进入路由时触发
- 拉拉维尔重定向::路由不起作用
- 余烬父路由重定向到子路由
- Ionic (AngularJS) - 重定向用户和路由
- Express 4– 将所有路由的HTTP重定向到HTTPS
- 快速重新启动匹配路由-重定向
- Angular.js:prettyPhoto URL重定向到Angular路由中提到的默认页面
- 角度路由-重定向到外部站点
- 正在重定向angular.js路由的.htaccess
- 在重定向到另一个页面/路由之前进行确认
- Javascript重定向:symfony路由中的脚本不工作
- 如果未通过身份验证,则在所有路由上重定向到登录