tou*_*tpt 27 node.js express passport.js
我有一个基于快递的项目,需要基于护照的身份验证.
后台是一个angularjs应用程序作为静态文件.
我的身份验证代码完全基于https://github.com/jaredhanson/passport-local/blob/master/examples/express3-no-connect-flash/app.js
如果您未经过身份验证,则不要提供角度应用程序.我尝试在/ admin路由上添加ensureAuthenticated,但它使路由不起作用(404).一旦我删除了EnsureAuthenticated,就会提供/ admin.
app.use(express.static(path.join(__dirname, 'public')));
app.use('/admin', ensureAuthenticated, express.static(path.join(__dirname, 'admin')));
//serve routes
app.use(app.router);
Run Code Online (Sandbox Code Playgroud)
公用文件夹包含登录页面.
我怎么能实现这个目标?
Bob*_*obz 28
遇到同样的问题,这就是我最终做的事情!
app.use不允许你以这种方式链接中间件.各种app.VERB函数都可以,但是app.use没有.这是一次一个中间件.
如果将2个中间件拆分为单独的调用,则应获得所需的结果:
app.use('/admin', ensureAuthenticated);
app.use('/admin', express.static(path.join(__dirname, 'admin')));
Run Code Online (Sandbox Code Playgroud)
Mik*_*Dev 20
您可以使用中间件检查路由,如果他们没有登录并且正在访问管理页面,则会重定向它们,例如(未经测试):
app.use(function(req, res, next) {
if (req.user == null && req.path.indexOf('/admin') === 0)
{
res.redirect('/login');
}
next();
});
Run Code Online (Sandbox Code Playgroud)
app.use('/admin', function(req,res,next){
if(req.user){
return express.static(path.join(__dirname, 'public'));
} else {
res.render(403, 'login', {message:'Please, login!'});
}
});
//serve routes
app.use(app.router);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24962 次 |
| 最近记录: |