【发布时间】:2016-11-18 15:25:04
【问题描述】:
如果我去http://localhost:3000 开始我的项目并且我没有登录,它将去http://localhost:3000/login,但我希望它去http://localhost:3000/#/login。除非我在角度前端重定向,否则有什么办法可以做到这一点?还是我做错了?
如果我能在后端以快递方式做到这一点,那将是理想的
我的 Angular 路由文件
$stateProvider
.state('app', {
abstract: true,
url: '/app',
templateUrl: '/layout'
})
.state('app.dashboard', {
url: '/dashboard',
templateUrl: '/dashboard',
ncyBreadcrumb: {
label: 'Dashboard',
description: ''
}
})
.state('login', {
url: '/login',
templateUrl: '/login',
ncyBreadcrumb: {
label: 'Login'
}
})
我的快速路由文件
function isLoggedIn(req, res, next) {
if (req.isAuthenticated()) {
return next();
}
return res.redirect('/login'); //this goes to login but doesn't load properly
//return res.redirect('/#/login'); //does not work
}
router.get('/', isLoggedIn, function (req, res) {
return res.render('index');
});
编辑:我添加这个是为了回应@jiajianrong
router.get('/#/login', function (req, res) {
return res.render('login');
});
并将 isLoggedIn 函数更改为:
return res.redirect('/#/login')
但它说重定向太多是错误的,因为它没有找到它。
编辑 2:
对不起,我不确定我是否明白你想说什么?例如现在..如果没有isLoggedIn检查,它会自动转到仪表板,其中url是http://localhost:3000/#/app/dashboard,因为我相信这里有这行代码?:
$urlRouterProvider.otherwise('/app/dashboard');
但我的 Express 方面没有专门针对 /app/dashboard 的路线。我已经正常工作的仪表板路由是这样的:
router.get('/dashboard', function (req, res) {
return res.render('dashboard');
});
【问题讨论】:
标签: angularjs node.js express passport.js